Titanium CLIのセットアップ・ビルドなど導入編

Titanium CLI

諸般の事情でTitanium+Alloyに少し触れることに。導入の備忘録。


alloy!!


Titanium Mobileといえば、Titanium Studioが主流だと思うのだが、最近はコマンドラインツールも提供されるようになったらしいので使ってみる。そいで、Titanium Mobileで開発する際のMVCフレームワークに相当するAlloyというのも、npmで入るらしいのでまとめて導入。

% npm install -g titanium
% npm install -g alloy

% titanium -v
3.0.22
% alloy -v
0.3.6

さらっとnpm install -gtitaniumalloyをインストールする。これを試した時点における、それぞれのバージョンは上記。

セットアップ

% titanium sdk update --install
New version available! 3.0.0.GA

Downloading http://api.appcelerator.net/p/v1/release-download?token=J4zpt4T2
  100% [========================================] 0.0s

Extracting SDK…

Titanium SDK 3.0.0.GA successfully installed!

titanium setupの前に、SDKが入っていないと怒られるので、titanium sdk update --installを行ってみる。Titanium Studioを入れたことがあれば、そのときに勝手に入っているものがあるかもしれないが、改めてCLIから最新を入れておいたほうが良さそう。

% titanium setup
Enter ctrl-c at any time to quit

What is your name? (this is used as the default for the "author" field in the tiapp.xml or module manifest file when creating new projects) ahomu
What is your email address used for logging into the Appcelerator Network? mail@ayumusato.com
What would you like as your default locale? (examples: "en", "de", "fr") (ja-jp)
What Titanium SDK would you like to use by default? (3.0.0.GA)
Path to your workspace where your projects should be created: ~/Documents/Titanium
Path to the Android SDK: (this is needed for building Android apps) /Applications/android-sdk-macosx

Configuration saved

CLIは-hで大体の使い方を教えてくれるので、最近GUIよりもむしろシンプルで親切なように感じる場合がある。とはいえ、ここでは単純な対話形式で設定をしていくだけである。

iOSのビルド

% titanium create
Target platforms: (android,ios,ipad,iphone,mobileweb) iphone
App ID: mu.aho.tryalloy
Project name: TryAlloy

[INFO] Creating Titanium Mobile application project
[INFO] Project 'TryAlloy' created successfully in 39ms

titanium createでプロジェクトを作成する。Titanium Studioを立ち上げてもそもそやるよりも、個人的には手軽に感じた。色々と設定項目があるとは思うが、それはファイルのほうを直接触れば良いと思っている。titanium configとかもあるし。

% titanium build -p iphone -T simulator
[INFO] Build type: development
[INFO] Building for target: simulator
[INFO] Building using iOS SDK: 6.0
[INFO] Building for iOS iPhone Simulator: 6.0
[INFO] Building for device family: iphone
[INFO] Building for iOS 6.0; using 4.3 as minimum iOS version
[INFO] Debugging disabled
[INFO] Cleaning old build directory
[INFO] No Titanium Modules required, continuing
[INFO] Performing full rebuild
[INFO] Copying Xcode iOS files
[INFO] Creating Xcode project directory: /Users/username/Documents/Titanium/TryAlloy/build/iphone/TryAlloy.xcodeproj
[INFO] Writing Xcode project data file: Titanium.xcodeproj/project.pbxproj
[INFO] Writing Xcode project configuration: project.xcconfig
[INFO] Writing Xcode module configuration: module.xcconfig
[INFO] Creating symlinks for simulator build
[INFO] Writing properties to ApplicationDefaults.m
[INFO] No module resources to copy
[INFO] No CommonJS modules to copy
[INFO] Finished building the application in 23s 460ms
[INFO] Running application in iOS Simulator
[INFO] Launching application in iOS Simulator

-p iphoneというようにpオプションでプラットフォームを明示しておかないと、buildを叩いたあとに改めて聞かれる。-T simulatorも明示しているが、こちらはデフォルトでもsimulator宛てにビルドされるみたい。

ちゃんとビルドできれば、順当にiOS Simulatorが立ち上がって勝手にアプリが起動する。これだけ言うとすごい簡単。この時点ではcreate直後なので、簡単なサンプルだけが立ち上がる状態。

tmuxの罠

tmuxユーザーなのだけど・・・罠。

[INFO] Launching application in iOS Simulator
[ERROR] An error occurred running the iOS Simulator
[ERROR] [DEBUG] Sessiocould not be started: Error Domain=DTiPhoneSimulatorErrorDomain Code=2 "Simulator session timed out." UserInfo=0x102208ee0 {NSLocalizedDescription=Simulator session timed out.}

実は最初、かなりの時間を上記のエラーに悩まされて持って行かれていた。iOS Simulatorが起動される段になって、タイムアウトしてしまう。理由がよく分からず色々調べていたら、フォーラムで調べた際に見落としていた情報に答えがあった。

I found the solution. the problem is that I ran titanium.py inside of tmux terminal. and I ran titanium.py outside of tmux, I could get iPhone simulator! iPhone simulator timeout when invoked from builder.py » Community Questions & Answers » Appcelerator Developer Center

tmuxの中からtitanium.pyが走るとダメらしくて、外からだったら大丈夫とのこと。

Androidのビルド

一応Androidも試しておいた。

% titanium create
Target platforms: (android,ios,ipad,iphone,mobileweb) android
App ID: mu.aho.testroid
Project name: Testroid

[INFO] Creating Titanium Mobile application project
[INFO] Project 'Testroid' created successfully in 24ms

普通にtitanium createしてみる。

% titanium build -p android -T emulator
[INFO] logfile = /Users/username/Documents/Titanium/Testroid/build.log
[DEBUG] /Users/username/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.GA/android/builder.py simulator Testroid /Applications/android-sdk-macosx /Users/username/Documents/Titanium/Testroid mu.aho.testroid 7 HVGA
[INFO] Building Testroid for Android ... one moment
[INFO] Titanium SDK version: 3.0.0 (12/12/12 18:49 a5894b3)
[DEBUG] Waiting for device to be ready …
[TRACE] adb devices returned 0 devices/emulators
[TRACE] adb devices returned 1 devices/emulators

初回のビルド時に、エミュレーターのAVD(Android Virtual Device)が追加され、その中にSDKなどが時間をかけて入る。うまく動かない場合は、環境変数の$ANDROID_SDKが狂っている可能性があるのでチェックしておくこと。

AVDのSnapshot: enalbeは、一見してうまく動いているように見えるけど、とりあえず避けた方が無難そう。(色々よく分かっていない)

次Alloy...?

本来はAlloyを触るまでいきたかったけど、導入時のトラブルシューティングだけでかなり時間を持って行かれてしまったので、今回はここまで。

Alloy自体もちょろっと見てみましたけど、Alloy自体は中身見てもおもしろさわからんね...(´・ω・`) アプリつくってナンボですわなこりゃ。