iOS6をtitaniumで動かそうと思ったら想像以上につまづいたのでメモしておきます。OSのアップデート対応ってほんと面倒ですね。。環境構築9割、アプリのソース修正1割って感じ。もうやりたくない…
その他のtitanium関連記事はこちら
やりたいこと
前にtitaniumで作ったアプリがあるんですけど、それがiOS6にアップデートしたら表示崩れするって言うことで直さなきゃなーと言うことになりました。アプリの修正自体は簡単そうな気がしたんですが、使っているtitanium mobile SDKが1.7.5でiOS6対応してなかったしxcodeも古いままだったのでその辺もまとめてアップデート。なのでやったことは以下の通り。
Mac OSの最新版へのアップデート
これ、Mac使う人はみなさんやるものなんですかね。僕はやったことなかったです。これをやらないとxcodeの最新版が入らないようなのでアップデートしました。アップデート方法はMacの左上にあるリンゴボタン(名前がわかりません…)を押して「ソフトウェア・アップデート」を押すだけ。あとは画面の指示に従って押していけば最後まで辿り着くと思います。僕は1年ほど前にMacbook air(OSはLion)を買ってから一度もアップしてなかったからか、アップデートに40分くらいかかりました。完了後再起動が必要です。
xcode 4.5へのアップデート
iOSに対応するためにはxcodeをそれなりに新しくしてiOS SDKを新しくしないといけません。ので、app storeからxcodeを探してインストール。ちなみに以前はパッケージをDLしてきてそのまま入れていたんですが、今回はそこに共存させる形でapp storeからインストールしました。競合してややこしいことになりそうだなーと思ったんですが「過去のバージョンを削除しますか?」と言うダイアログが出てうまく過去のバージョンは勝手に削除してくれました。すげえ!
titanium studioを最新版にアップデート
使っているバージョンにもよると思いますが、Help > Check for Updates を押せば勝手に最新化してくれるんじゃないでしょうか。僕は起動時に右下に「最新版あるよ〜」と言う旨のポップアップが出てたのをクリックしてそこからアップデートしました。
titanium mobile SDKを2.1.3にアップデート
この辺の記事を参照しながら。
- http://ti-news.hatenablog.jp/entry/2012/09/19/210813
- http://developer.appcelerator.com/blog/2012/10/titanium-sdk-2-1-3-is-released.html
上記と同様に Help > Check for Titanium SDK Updates を押したら最新化してくれるかもしれません。
エラーに対応するため設定変更
エラーメッセージと参考URL
ここまででもそれなりに時間かかってるんですが、上をやっただけだと以下のようなエラーが出てました。
dyld: Library not loaded: @rpath/DevToolsFoundation.framework/Versions/A/DevToolsFoundation
Referenced from: /Developer/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/iPhoneSimulatorRemoteClient.framework/Versions/A/iPhoneSimulatorRemoteClient
Reason: image not found
なんかシミュレータの起動でこけてそうなんですが、よくわからないのでとりあえずエラーメッセージでググって以下のような記事が出て来たので参考に。
結局やったこと
ぶっちゃけ色々やってみたのでどれが正しかったのか分かってないんですが、以下を試したらとりあえずは動きました。
- コンソールから次のコマンドを実行 sudo ln -s /Applications/Xcode.app/Contents/Developer/ /Developer
- コンソールから次のコマンドを実行 sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
- 多分、複数入っている場合とか?に必要なのか、xcodeの場所を指定するコマンドのようで。(よくわかってない)
- titaniumでプロジェクトの使うiOS SDKを6.0に設定する
- titaniumの Run > Run Configurations... で当該プロジェクトを選んで iOS SDKを6.0にする
- xcode4.5はどうやらiOS6.0のみしかデフォルト対応していないようなので、過去バージョンのSDKを入れたい場合は、以下の辺りを参考に。
- Xcode4.5でiOS6以外のシミュレータを追加する方法
- titaniumでプロジェクトのビルドターゲットを2.1.3にする
- titaniumの Project > Propaties > Project Build Path からSDK 2.1.3を選択
- これだけでいいだろと思ったらtiapp.xmlを自分で変更しないと変わってくれなかった、、ので手動で修正
titaniumでiOS6シミュレータが動くような環境でけた
と言うわけで無事に、iOS6でバグってる自アプリの画面を表示することが出来ました。前進してるけど嬉しくない…
教訓は、色んなツールとかはこまめにアップデートしとかないとね、ということで。まる。