iOS6シミュレータをtitanium mobile SDK 2.1.3とxcode4.5を入れて動かしてみた

iOS6をtitaniumで動かそうと思ったら想像以上につまづいたのでメモしておきます。OSのアップデート対応ってほんと面倒ですね。。環境構築9割、アプリのソース修正1割って感じ。もうやりたくない…

やりたいこと

前にtitaniumで作ったアプリがあるんですけど、それがiOS6にアップデートしたら表示崩れするって言うことで直さなきゃなーと言うことになりました。アプリの修正自体は簡単そうな気がしたんですが、使っているtitanium mobile SDKが1.7.5でiOS6対応してなかったしxcodeも古いままだったのでその辺もまとめてアップデート。なのでやったことは以下の通り。

  • Mac OSの最新版へのアップデート
  • xcode 4.5へのアップデート
  • titanium studioを最新版にアップデート
  • titanium mobile SDKを2.1.3にアップデート
  • エラーに対応するため設定変更(ビルドターゲットとtiapp.xmlの修正)

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にアップデート

この辺の記事を参照しながら。

上記と同様に 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
    • xcodeの最新版はインストールディレクトリが変わっているようなので、過去のバージョンのディレクトリ構造を参照しているアプリとかを生かすためだと思われます。
  • コンソールから次のコマンドを実行 sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
    • 多分、複数入っている場合とか?に必要なのか、xcodeの場所を指定するコマンドのようで。(よくわかってない)
  • titaniumでプロジェクトの使うiOS SDKを6.0に設定する
  • titaniumでプロジェクトのビルドターゲットを2.1.3にする
    • titaniumの Project > Propaties > Project Build Path からSDK 2.1.3を選択
  • これだけでいいだろと思ったらtiapp.xmlを自分で変更しないと変わってくれなかった、、ので手動で修正
    • tiapp.xmlを開いて Build Propaties のTitanium SDKを2.1.3に変える

titaniumでiOS6シミュレータが動くような環境でけた

と言うわけで無事に、iOS6でバグってる自アプリの画面を表示することが出来ました。前進してるけど嬉しくない…

教訓は、色んなツールとかはこまめにアップデートしとかないとね、ということで。まる。