QA@IT

Titanium MobileでCLIでビルドする方法

2570 PV

下記でsymlinkを張ってるっぽいところでエラーでbuildできません。やり方間違っているでしょうか。ご指定いただけれるとありがたいです。

環境

  • Titanium SDK: 2.0.2.GA
  • Titanium Studio: 2.0.2.20120531191
  • Xcode: 4.3.2
  1. Titanium StudioでプロジェクトFooを作成
  2. Project -> Clean
  3. Terminalで下記
~/Documents/Titanium Studio Workspace/Foo% ~/Library/Application\ Support/Titanium/mobilesdk/osx/2.0.2.GA/iphone/builder.py run .
(中略)
[DEBUG] linking: ./Resources/iphone/appicon.png to /Users/komagata/Documents/Titanium Studio Workspace/Foo/build/iphone/build/Debug-iphoneos/Foo.app/appicon.png
[ERROR] Error: Traceback (most recent call last):
  File "/Users/komagata/Library/Application Support/Titanium/mobilesdk/osx/2.0.2.GA/iphone/builder.py", line 969, in main
    compiler.compileProject(xcode_build,devicefamily,iphone_version,True)
  File "/Users/komagata/Library/Application Support/Titanium/mobilesdk/osx/2.0.2.GA/iphone/compiler.py", line 422, in compileProject
    softlink_for_simulator(self.project_dir,app_dir)
  File "/Users/komagata/Library/Application Support/Titanium/mobilesdk/osx/2.0.2.GA/iphone/compiler.py", line 181, in softlink_for_simulator
    softlink_resources(iphone_resources_dir,app_dir,False)
  File "/Users/komagata/Library/Application Support/Titanium/mobilesdk/osx/2.0.2.GA/iphone/compiler.py", line 163, in softlink_resources
    os.symlink(from_, to_)
OSError: [Errno 17] File exists

回答

【編集】Titanium 3.0からはCLIツールが同梱されています。ビルドは「$ titanium build」で実行できます。ファイルのコピーやsymlinkなどの必要はありません。

「.」ではなくフルパスをクォート付きで渡すと正常に動作します。あるいは空白の前にバックスラッシュを追加すると動作します。

$ cd PROJECT_DIR
$ rm -rf ./build/iphone/*
$ ~/Library/Application\ Support/Titanium/mobilesdk/osx/2.0.2.GA/iphone/builder.py run "`pwd`"
# または
$ ~/Library/Application\ Support/Titanium/mobilesdk/osx/2.0.2.GA/iphone/builder.py run /Users/hoge/Documents/Titanium\ Studio\ Workspace/PROJECT_NAME/

2行目はcleanと同等のことを実行しています。

たまにタイムアウトすることもありますが、再度繰り返すと動きます。エラーメッセージのfrom_とかto_とかの箇所はPythonのスクリプトでos.path.join(ディレクトリ, ファイル)みたいなことをやっているので、そこに至るまでに「.」をうまく展開できていないようですが、直しても影響範囲が大きいので、とりあえず上記のWorkaroundで対処しています。

編集 履歴 (1)
  • 上記で行けました。ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。