箱が…

Amazon箱ストラクチャーが崩れてきそうです。ダンボー作ろうかな。

WinでTitanium Studio

ちょっと(楽して)作ってみようって人にはハードル高すぎだろこの環境。
というわけでWinに入れたTitanium Studioがそのままではテンプレートで生成されたデフォルトのコードすら実行できない問題の解決方法とか書きます。

なお私はAndroidでやりましたので、(いるのかわかりませんが)BlackBerryの人は他を当たってください

あとTitanium Studioのバージョンは Titanium Studio, build: 1.0.2.201107130739 で、Titanium SDK は 1.7.2 だそうです。

基本

まあこれは問題ではないんですが、設定を弄るダイアログがメニューバーの Window -> Preferences に入ってるのがちょっと意外だったので。

Android SDK

2つほど問題があるようです。

Android SDKのパス

http://www.b4u.sakura.ne.jp/wp/?p=238 によるとAndroid SDKのパスにスペースが入ってるとおかしくなるらしい
私も試行錯誤の途中でやってみただけなので、本当におかしくなるのかはわかりませんがコードのビルドが成功した環境ではSDKをスペースが入ってないパスに置いてあるので、まあやって損はないんじゃないでしょうか。

Android SDKが入ってるディレクトリの指定

私はインストーラで入れたのでデフォルトの android-sdk というディレクトリを指定します。
SDK Manager.exeとかplatform-toolsが入ってるディレクトリです。

で、まあ指定するんですが、なぜかAndroid 2.1のSDKが入ってないとAndroid SDKディレクトリと認識されません。なんだこれ

そういうわけなのでAndroidSDK ManagerからAndroid 2.1のSDKを入れましょう。使わないけど。

Android Emuratorの引数

さて、設定は済みましたがこのままだとビルド後にエミュレータで実行するときにこけると思われます。

Android Emuratorの引数にスペースの入ったパスが含まれている場合、このスペースが引数の区切りとして解釈されるためこんな引数しらねーよ!(意訳)と怒られた結果、エミュレータが起動しないからです。

幸いにもエミュレータに渡す引数の構築はPythonスクリプトでやっているようなので、さくっとfixします。

書き換えるスクリプト
%ALLUSERSPROFILE%\Application Data\Titanium\mobilesdk\win32\1.7.2\android\builder.py
です。環境変数やTitanium SDKのバージョンは適当に読み替えてください。
私の環境では %ALLUSERSPROFILE% は C:\Documents and Settings\All Users に展開されました

このスクリプトの393行目あたりでエミュレータの引数を構築しています。

# start the emulator
emulator_cmd = [
    self.sdk.get_emulator(),
    '-avd',
    avd_name,
    '-port',
    '5560',
    '-sdcard',
    self.sdcard,    # この行を書き換える
    '-logcat',
    '*:d,*',
    '-no-boot-anim',
    '-partition-size',
    '128' # in between nexusone and droid
]

上で示した行のコードを '"%s"' % self.sdcard に書き換えます。
書き換えるとこんな感じ

# start the emulator
emulator_cmd = [
    self.sdk.get_emulator(),
    '-avd',
    avd_name,
    '-port',
    '5560',
    '-sdcard',
    '"%s"' % self.sdcard,    # self.sdcard から書き換えた
    '-logcat',
    '*:d,*',
    '-no-boot-anim',
    '-partition-size',
    '128' # in between nexusone and droid
]

まあパスをダブルクオートしただけです。

なお、ためしに self.sdcard にパスを代入する段階でクオートしたところ別の場所でこけるようになってしまったので、エミュレータの引数を構築するこの段階でクオートするのが正解のようです。

その他の注意点

パス

環境変数 Path に (Android SDKの入ってるディレクトリ)\platform-tools と (同ディレクトリ)\tools が入っていることを確認しましょう。

パスが通っていれば、コマンドプロンプトから adb version でadbのバージョンが出てくるはずです

また、JDKへのパスが通っていないかもしれません
その場合も環境変数 Path に (JDKディレクトリ)\bin を追加しましょう

パスが通っていれば、 javac -version でjavacのバージョンが(ry

adb.exe

ビルドして実行するときに adb.exe が動いたままになっていたらタスクマネージャから殺しましょう

最後に

これでビルドして実行できるはずです。
できない人はビルドログか何かを見て頑張ってください。