Drowsy Dog's Diary

any note, any thought

2013年3月6日
by kazoo
1 Comment

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

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

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

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

2013年3月6日
by kazoo
0 comments

特定のファイル|ディレクトリを除いたカレント以下のファイルサイズ合計

たとえば、カレント以下から .svn/ を除いた合計サイズは?
の、ワンライナー。(OS X)

いろいろありそうですが、

に、たどり着きました。
ls のあたりもうちょっと綺麗にできそうな気がする。awk だけでできそうな気もする。けども。

こねくり回すのちょっと面白かったのでメモ。