40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

JavaScriptでTitanium Module作ろうと思ったらbuild.pyエラーになった原因&解決方法

http://d.hatena.ne.jp/kaz_konno/20111124/1322153970:title=という素敵なエントリを読んだのと、来週のTitanium勉強会の資料作成一応終わった段階だったので、試しにJavaScriptでTitanium Module作ろうと思ったらちょっとハマったので、ちょっとメモ

build.py実行すると「ImportError: cannot import name Compiler」と怒られる

以前作りかけていたGoogleReaderクライアントのGoogleAccountの認証部分だけでもモジュールにしておけば、色々使い勝手良くなるかと思ってこれをモジュールにしようと思って作業とりかかりました

上記エントリを参考に

titanium create --type=module --platform=iphone --id=com.twitter.h5y1m141.googleaccount --name=googleaccount

とした後に、assetsフォルダ配下に、com.twitter.h5y1m141.googleaccount.js作ってコードを書く。

その後、build.pyを実行すると

Traceback (most recent call last):
  File "./build.py", line 193, in <module>
    compile_js(manifest,config)
  File "./build.py", line 69, in compile_js
    from compiler import Compiler
ImportError: cannot import name Compiler

というエラーが出て、buildが出来ませんでした。

解決方法

iOS Module Development Guideを見てたら

your Titanium SDK may have been installed under ~/Library instead of /Library. Your titanium.xcconfig file must refer to the correct directory, else the build will fail.

という記述を見つけて、titanium.xcconfigを見たら

TITANIUM_SDK = /Library/Application Support/Titanium/mobilesdk/osx/$(TITANIUM_SDK_VERSION)

となっていました。

自分のTitaniumMobileのSDKは、/ではなく、~/配下にインストールしているため、この部分修正したら無事にbuild出来るようになりました!