titanium mobile のKitchenSinkをAndroidとiPhoneで比べてみた

javascriptを使ってクロスプラットフォーム環境でネイティブアプリを作れる、ということで注目を集めているTitanium Mobile.
1年くらい前に試したときにはAndroidはビルドすら通らなくて放置しておいたのですが、今はどうだろう、と試してみました。

動作させたのはTitanium MobileのAPIをひと通り使ったサンプルアプリ、KitchenSinkです。
http://developer.appcelerator.com/doc/kitchensink

動作確認端末

ほんとうはできるだけ近いスペックの機種で比べられるといいんだけど、、、

iOS

iPhoneシミュレータ on Mac Book Air。SDK4.1

Android

Nexus S
エミュレータ on Mac Book Air でやったが重すぎるので実機に変更。SDKは2.1(注意あり後述)

ビルド、インストール

ソースはここからgithubからcloneまたはzipをDL
https://github.com/appcelerator/KitchenSink

iOS

プロジェクトをインポートして、Launchボタンクリックでビルド開始、iPhoneシミュレータが起動しアプリも実行された。全く手間なし。

Android

SDKで、SDK2.1 を選ぶとinstallに失敗。apkは出来ていたので手動でインストールしてみる

$ cd KitchenSink/KitchenSink/build/android/bin
$ adb install app.apk
Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY]

SDKgoogle APIを含めたものを指定しないといけないようなので、APIs 2.1を選択して再びLaunch.

Application should be running

とでるが始まらないので手動インストール => OK

動作確認

iOS

シミュレータなのでカメラなどの動作確認は出来なかったが、ひと通り動作。不正終了は発生しなかった。
http://www.ustream.tv/recorded/12427702
Androidビルドと比べると分かるが、実行出来る項目も多い。例えばCameraは
AndroidビルドがBasicだけなのに対しiOSビルドはBasic/Custom Overlay/Overlay Webview/Augmented Reality/etc..と項目が増えている。

Android

Mashups -> twitter, YQL + Flickr の両方で必ず落ちる。
見た感じテキストデータは表示されているので、画像のDL、表示を非同期でやってる部分で不整合が起きてるようだ。Forumでは特に話題になってないようだけど、修正されるのかなぁ。

生成される物

もともとAndroidビルド, iOSビルドともバイナリを出力していたが、iOSビルドはAppleの規約問題を経て、プロジェクトファイル一式を生成するようになった。

iOS

以下にxcodeのプロジェクト一式が作られる

./build/iphone/

Android

./build/android/

にひと通り必要なディレクトリが生成されるが、生成されるのは事実上

./build/android/bin/app.apk

だけで、javaのコードは含まれずsrc以下は空っぽ。

まとめ

印象としてはiOSビルドは機能、安定性ともに充実しているが、Androidはまだまだといった感じ。昨今Androidが勢いづいてきているので、今後の対応に期待したいところです。

      • -

2/24 一部修正