Drowsy Dog's Diary

any note, any thought

iOSシミュレータ上アプリの実ファイルパスとバンドルリソースの上書き

| 1 Comment

ちょっとやらかしたのでメモ。。

iOSシミュレータで扱うアプリケーションの実際のファイルパスは、

/Users/xxx/Library/Application Support/iPhone Simulator/6.1/Applications/XXXXXX-XXXX-XXXX-XXXX-XXXXXXX/hogehoge.app/

のようになり、バンドルリソースもこの下にあります。(OS X Lion, XCode 4.6, Simulator 6.1)
iOSバージョンが変われば当該のディレクトリも変わるけど、iPhone/iPad それぞれのシミュレータでは共用らしい。

で、このディレクトリ、シミュレータ上でアプリをアンインストールしたり、メニューから「コンテンツと設定をリセット」したときは消えるのだけど、アプリを上書きでシミュレータをスタートさせるときには同じディレクトリに上書きとなるので、たとえばバンドルリソースファイルが削除されていても、シミュレータ上には古いリソースが残っていたりします。フォルダリファレンスとして登録されたバンドルリソースのディレクトリ内容を手動で変更したときにありがち。

また、たとえば XCode プロジェクトのフォルダをまるっとコピーして、別の開発リソースとして作業をしていても、プロジェクト名(BundleID)が同じものは、シミュレータ上のバンドルリソースも同じディレクトリになります(シミュレータ上同じアプリなんだから当たり前ですが)。

以上は実機でも同じです。上書きのときに古いバンドルリソースは OR を取る形で残っている。

なので、XCode プロジェクトを成果物としてリリースする場合、固めたリリース物を再度解凍して別ディレクトリで最終テスト。。なんてやってるつもりが、XCode 上には存在しないリソースが実は手元のデバイスやシミュレータには残っていて、「おい動かねーぞ」「あほかこっちでは動くわ」なんてやり取りをするハメになったりします。というかなった。反省した。

最終テストはクリーンな環境でやりましょう。。という、ごく当たり前のお話でした。

 

あと、シミュレータアプリのディレクトリをうっかり手動で削除したりすると、

error: failed to attach to process ID 0

というエラーで上書きできなくなったりします。このときにも、素直にシミュレータ上のアプリを長押ししてアンインストールしましょう。


Author: kazoo

犬はさよならを言わないのだ。

One Comment

  1. appのバージョンアップの際はパスがかわるって話をどっかで聞いた事有ります。
    復元の場合はどうなんですかね?

コメントを残す

Required fields are marked *.