Titanium CLIのセットアップ・ビルドなど導入編
Posted: Updated:
Titanium CLI
諸般の事情でTitanium+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 -g
でtitanium
とalloy
をインストールする。これを試した時点における、それぞれのバージョンは上記。
セットアップ
% 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自体は中身見てもおもしろさわからんね...(´・ω・`) アプリつくってナンボですわなこりゃ。