2013年06月30日

Apportableを試してみました

ようやく Android4.0 端末を入手できたので、Apportable について試してみました。

試してみた環境は以下の通りです。

  • Mac ... Mac mini (Mid 2010) OS X 10.8.4
    プロセッサ 2.4 GHz Intel Core 2 Duo
    メモリ 8 GB 1067 MHz DDR3
  • Android ... EMOBILE GS03

まずは、こちらに従いサンプルが動作するか確認してみました。

  1. とりあえずどこにどういうフォルダが作られるか分からないので、ターミナル上で ~/project/apportable/ というフォルダを作成し、そこへ移動
  2. アカウントページに移動して、アカウントを作成
    とりあえず氏名は cbbandtqb ということで登録しましたが、無事アカウント取得できました。
    ちなみにアカウントを作ると、 Apportable さんから「始めるの手伝いましょうか?」というメール(もちろん英文)が届きます。
  3. 以下のような画面が表示されるので(※一部ぼかしています)、素直に ~/project/apportable/ 上で、 curl コマンドを実行
    apportable_inst.png
  4. 待つこと10分以上...
  5. GS03 を USB デバッグ可能にして Mac に接続
  6. 以下の通りに PATH を通す
    (echo; echo PATH=~/.apportable/SDK/bin:$PATH) >> ~/.bash_profile
    source ~/.bash_profile
    
  7. 以下の通り apportable コマンドを実行
    git clone git://github.com/apportable/Spin.git
    cd ./Spin
    apportable load
    
  8. Java のインストールが必要だとのメッセージが出たので、メッセージに従いそのまま Java をインストール
  9. もう一度 apportable load を実行
  10. 無事、グリーンの回転するキューブが GS03 上に表示されました!

ということで、本日はここまで。あとは実際に iOS 用に自分で作ったアプリを対象に試してみる予定。


FruitsFields - 寄付代わりに購入いただけると嬉しいです。
Icon-72.png as_available_appstore_icon_20091006.png

サポートページはこちら。
http://cbbandtqb.toypark.in/FruitsFields/index_jpn.html

posted by cbbandtqb at 22:53| Comment(0) | TrackBack(0) | 備忘録 | このブログの読者になる | 更新情報をチェックする

2013年06月25日

Apportable - Using Java

Objective-C で書かれたコードをそのまま Android に移植できるという SDK のドキュメントを直訳してみました。 オリジナルは、こちらになります。なお、apportableさんの許諾はいただいております。

Using Java

Apportable は Android アプリを純粋な Objective-C で構築するのを容易にしています。 もしあなたが Java も使いたいなら、 Apportable BridgeKit フレームワーク で2つの言語間のコールが簡単に行えるようになります。 BridgeKit はプラットフォーム内部で広範囲に渡って使われます。

HelloJava サンプルアプリは、 Objective-C と Java の間で基本的な変数を送ったり受け取ったりするために BridgeKit を使っています。

Adding Java sources

あなたが必要としている java ファイルとソースパスを追加するために、あなたの .approj フォルダの中の configuration.json ファイルを編集して、Java ソースをあなたのアプリに追加して下さい。例えば以下の通りです:

"java_sources": [
    "java/src/com/apportable/demo/HelloBridge.java",
],
"java_sourcepaths": [
    "java/src",
],

Wrapping Java methods

JavaObject から派生した Objective-C クラスは、Java オブジェクトに対するラッパーとなります。 +initializeJava メソッドにおいて、 JavaObject は Objective-C のセレクタのリストを登録し、 一致したセレクタ名を指定します。

引数や戻り値の型を宣言するときには、int, float や double などのような基本的な型は、 [JavaClass intPrimitive], [JavaClass floatPrimitive], [JavaClass doublePrimitive] を使うことで指定することができます。 java.lang.String や byte[] の引数や戻り値を指定するためには、 [NSString className] や [NSData className] を使うことができます。 この件についてのさらなるドキュメントは、 JavaObject ドキュメントで確認することができます。

[HelloBridge registerConstructorWithSelector:@selector(initWithIntValue:doubleValue:)
                                   arguments:[JavaClass intPrimitive],
                                             [JavaClass doublePrimitive],
                                             nil];

[HelloBridge registerInstanceMethod:@"getIntValue"
                           selector:@selector(intValue)
                        returnValue:[JavaClass intPrimitive]];

[HelloBridge registerInstanceMethod:@"setIntValue"
                           selector:@selector(setIntValue:)
                          arguments:[JavaClass intPrimitive], nil];

どの JavaObject クラスも +className メソッド中でラッピングしているクラスをまた指定しなければなりません。

+ (NSString *)className
{
    return @"com.apportable.demo.HelloBridge";
}

これで、ブリッジされたオブジェクトは他の Objective-C オブジェクトのように使うことができるようになります:

HelloBridge *bridgeObject = [[HelloBridge alloc] initWithIntValue:42 doubleValue:55.4];
[bridgeObject setIntValue:99];
[bridgeObject setDoubleValue:11.44];

Objective-C のコールバックメソッドを登録することもできます。

[HelloBridge registerCallback:@"bridgeCallback"
                     selector:@selector(valueChanged:doubleValue:)
                  returnValue:nil
                    arguments:[JavaClass intPrimitive], [JavaClass doublePrimitive], nil];

ここで HelloObject.java において、このコールバックをネイティブメソッドとして宣言できます:

private native void bridgeCallback(int i, double d);

ネイティブメソッドをコールすることで、 JavaObject ラッパーの valueChanged:doubleValue: メソッドを起動することができます。

bridgeCallback(mIntValue, mDoubleVal);

完全に動作するサンプルとなる HelloJava を確認してみてください。

Calling Android methods

BridgeKit リファレンスは、既にラップされている Android クラスを説明しています。あなたは、これらをあなた自身でラップする必要はありません。


目次へ戻る

FruitsFields - 寄付代わりに購入いただけると嬉しいです。
Icon-72.png as_available_appstore_icon_20091006.png

サポートページはこちら。
http://cbbandtqb.toypark.in/FruitsFields/index_jpn.html

posted by cbbandtqb at 22:50| Comment(0) | TrackBack(0) | 備忘録 | このブログの読者になる | 更新情報をチェックする

2013年06月24日

Apportable - Supported File Formats

Objective-C で書かれたコードをそのまま Android に移植できるという SDK のドキュメントを直訳してみました。 オリジナルは、こちらになります。なお、apportableさんの許諾はいただいております。

Supported File Formats

Images

png jpeg gif targa tiff

PNG は最も一般的なフォーマットであり、ロスレスな圧縮を使うようなテクスチャやアートワークに最も適しています。 しかしながら、 Android は iOS よりPNG ファイルを厳密に扱い、特にメタデータや他のフィールドの周辺は厳密です。 あなたは PngcrushImageOptim であなたの PNG をクラッシュしておくべきです。 Xcode とは異なり、我々のビルドしすてむは、これらのことを自動的には行いません。

もし容量に関する制約があるなら、 JPEG か、 PNG と JPEG の組合せを使うことができます。 高品質な JPEG イメージは大きな写真的なリアルな画像向けにはすばらしく、その JPEG 圧縮はもっとも最適化されています。

Texture Compression

pvr

PowerPVR テクスチャコンテナフォーマットは、PowerVR デバイス上のパフォーマンスを改善し、 iPhone デベロッパの間では人気があります。 もしあなたのアプリが PVR を使うなら、 PowerVR でないデバイス上で実行時にメモリ内でデコードされるでしょう。 もしあなたが NVIDIA ST3TC と Qualcomm ATITC の圧縮フォーマットをあなたのインストーラに含めたいなら、我々はこの件についてサポートを提供しているので、セットアップの支援のために我々にコンタクトして下さい

Audio

ogg wav caf m4a mp3

OGG と WAV はネイティブで使われています。 他のフォーマットは、コンパイル時に OGG にコンバートされ、 .approj/assets フォルダにきゃっしゅされます。 もしあなたがオーディオファイルをネットワークからダウンロードしているのであれば、 OGG ファイルを Android デバイスに提供すべきです。 あなたは元々のファイル拡張子を使い続けられます - プラットフォームが自動的に OGG か WAV デコーダを使おうとしてくれます。

Video

mp4 コンテナ内の H264 AVC

確認して欲しいのは、Main Profile や High Profile よりむしろ Baseline Profile (BP) を使ってエンコーディングしているかということです。 Google は、彼らのドキュメントの中でいくつかの基本的な動画エンコーディングの推奨方法を紹介しています。

Fonts

ttf otf

Android は概してインストールされているフォントは僅かしか搭載していません。 Apportable は自動的にあなたの選んだ iOS フォントを Android の相当物に実行時にマップし直します。 デフォルトフォントは、 Droid と Roboto のどちらかで、それらはサイズの観点から iOS と僅かに異なります。

カスタムフォントを含めるためには、iOS 上でするのと同じ方法でそれらをパッケージして、それらを Xcode のプロジェクトに追加し、それらのファイル名を .plist ファイルの中に含めて下さい。

Internationalization

Apportable はロケールの概念をサポートしているので、必要とされるフォントや代替物を Xcode プロジェクトに含めておくことを推奨します。

Android デバイスはしばしばインターナショナルなキャラクタセットのサブセットを含んでいます。 もしあなたのアプリが英語用デバイス上でサポートされている言語のすべてをサポートできなくても心配しないで下さい; そのような国のユーザは通常より完全なキャラクタセットを彼らのデバイス上に持っているでしょう。

Property lists

plist

フリーな SDK は XML plist 群に対するサポートを含んでいます。 もしあなたがバイナリの plist を使っているなら、 それらを XML にコンバートするために Apple の plutil を使うか、バイナリ plist のサポートを含んだ SDK を入手するために我々にコンタクトして下さい

Interface Builder files

xib

Xcode インタフェースビルダファイルは、Apportable によってデコードされます。 我々は UIKit のいくつかの特色を有効にしており、そのため UIKit であなたのアプリを作っているのであれば、 SDK の適切なバージョンを入手するために我々にコンタクトして下さい

Static libraries

Apportable でクロスコンパイルするためには、ソースファイル (.c, .m) が必要になるでしょう。 Apportable は ELF オブジェクトフォーマットを使っているので、 iOS 用の "mach" オブジェクトフォーマットで構築された .a ファイルはリンクできません。 もしあなたがバイナリのソースコード無しの SDK を使おうとしているなら、代わりに SDK の Java バージョンをコールしてみるか、我々がすでにラップされたバージョンを有しているかもしれないので我々にコンタクトして下さい


目次へ戻る

FruitsFields - 寄付代わりに購入いただけると嬉しいです。
Icon-72.png as_available_appstore_icon_20091006.png

サポートページはこちら。
http://cbbandtqb.toypark.in/FruitsFields/index_jpn.html

posted by cbbandtqb at 23:41| Comment(0) | TrackBack(0) | 備忘録 | このブログの読者になる | 更新情報をチェックする