TitaniumのAndroid用モジュール作成はWebで探しても日本語で解説しているところが見当たらなかったので、公式サイトを参考にかいつまんでまとめておきます。
公式サイトを全て完全に訳しているわけではなく、意訳や省略・追加している箇所もあるのでご了承ください。
環境はMac OSX(Lion)、Titanium Studio 1.0.4、Titanium SDK 1.7.2です。
既にTitaniumでのAndroidの開発環境は出来ている前提で記述します。
参考ページは下記です。
Module Developer Guide for Android
環境設定
まずこちらのページに
Environment setup
Follow the instructions in the Titanium Command-line tool Environment Setup section
とあるので、自分の.bash_profileにtitanium.pyへのaliasを設定します。
alias titanium="$HOME/Library/Application Support/Titanium/mobilesdk/osx/1.7.2/titanium.py"
なお「Application Support」のところは半角スペースをエスケープしないとコマンド実行時にエラーになります。
また、「1.7.2」は環境にTitaniumSDKのバージョンに合わせて変更してください。
sourceなどで.bash_profileを読み込み直してからtitaniumコマンドを実行し、下記のように表示されたら成功です。
$ titanium Appcelerator Titanium Copyright (c) 2010-2011 by Appcelerator, Inc. commands: create - create a project run - run an existing project emulator - start the emulator (android) docgen - generate html docs for a module (android) fastdev - management for the Android fastdev server help - get help
モジュールの作成
先ほど設定したtitaniumコマンドを使用して、モジュールのテンプレートプロジェクトを作成します。
生成するためのコマンドオプションは下記のようなフォーマットです。
titanium create --platform=android --type=module --name=$MODULE_NAME --id=$MODULE_ID --android=$ANDROID_SDK
$MODULE_NAME、$MODULE_IDは任意のモジュール名とIDを指定してください。
- $MODULE_NAMEは生成されるクラスやjarなどのファイル名に反映されます
- $MODULE_IDはTitaniumでtiapp.xmlやjavascriptからモジュールをrequireする際に使用します
- $ANDROID_SDKはandroid sdkを置いているパスを指定します
実際には下記のようなコマンドを実行します。
titanium create --platform=android --type=module --name=calc --id=org.appcelerator.calc --android=/path/to/android-sdk
実行するとカレントディレクトリに--nameで指定した名前(calc)でモジュールのフォルダが生成されます。
モジュールプロジェクトのレイアウト
- LICENSE - ライセンスを記述するテキスト。作成したモジュールを配布する場合にライセンスの内容を記述するために使用するのだと思います
- build.properties - Antのプロパティファイル。 Titanium SDKとAndroid SDKの場所が記述してあります
- build.xml - Antのビルドスクリプト。ビルド配布、テストに使用します
- manifest - モジュールのマニュフェストファイル。バージョン、作者、ライセンス、コピーライト、名前、id、GUID、プラットフォームなどの情報を記述します。
- timodule.xml - Activityなどモジュール内で使用する情報(通常AndroidManifest.xmlに記述するもの)を記述します
- hooks - モジュールがプロジェクトから追加/インストール/削除/アンインストールされた場合に実行されるスクリプトがあるディレクトリ。 スクリプトはあるのですが(this is still a WIP)となっていたので実際に使われているのかは不明です
- documentation - Markdown形式のドキュメントを置くディレクトリ。サンプルが生成されています。
- assets - モジュールで使用するPNGなどの素材を置くディレクトリ。READMEを読むとjsファイルなどもここに置いておくとプリコンパイルされたpure Javascriptとしてモジュール内で実行できるようです(実際に動作確認していません)
- lib - サードパーティのJARを置くディレクトリ。ここに入れておくと自動的にプロジェクトのクラスパスとモジュールのzipファイル(モジュールを配布する際に作成)に追加されます
- src - モジュールのソースコードディレクトリ
- example - モジュールを使用したサンプルプロジェクト
モジュールプロジェクトをeclipseに登録
モジュールの配布形式(zip)
distフォルダに配布用のzipファイルが生成されます。
zipの命名規則は通常$MODULE_ID-android-$MODULE_VERSION.zipです。
zipファイルには以下のものが含まれます。
eclipseを使用したビルド
モジュールプロジェクトはeclipseでビルドできます。
モジュールプロジェクトのbuild.xmlを右クリックし、「Run As」 > 「Ant Build(最初の方)」を選択します。
eclipseのConsoleに「BUILD SUCCESSFUL」と表示されたら成功です。
プロジェクトをF5などで更新するとdistフォルダが表示され、その中に配布用のzipファイルが生成されています。
モジュールをTitaniumアプリから使用する
モジュールを Titaniumのアプリから使用するには下記のようにします。
- 先ほど生成したzipファイルをTitaniumアプリ側のプロジェクトルートディレクトリにコピー
- Titaniumアプリのtiapp.xmlの
に以下のように追加します
<!-- $MODULE_VERSION should be the same as "version" in the module manifest --> <modules> <!-- <module version="$MODULE_VERSION">$MODULE_ID</module>--> <!-- For example, if we were adding the calc module: --> <module version="0.1">org.appcelerator.calc</module> </modules>
モジュールを読み込むためにrequireを使用します。
var Module = require('$MODULE_ID');
calcモジュールの場合は以下のようにします。
var Calc = require('org.appcelerator.calc');
アプリが起動またはビルドされるタイミングでモジュールのzipが自動的に展開されてアプリに読み込まれます。
長くなったのでテストやメソッドの呼び出しは次回記述します。