27
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

XcodeでBundle Resourcesを更新しても反映されない場合の対処法

Posted at

問題点

iOS開発をしていて、Bundle Resourcesに登録されているファイルを更新したり、追加して、実機やシミュレーターで実行してみても、リソースが上手く更新されないことがままあります。

例えば、画像を差し替えたのに古い状態の物が使われたり、追加したのにも関わらず、更新されずに参照時に落ちてしまうなどということが良く起こって、非常に煩わしい。

Clean Build Folderで生成物を全て消して、再ビルドをかけるとちゃんと反映されるんだけど、毎回再ビルドかけるのは大変なので、なにか良い対処法はないかなあと思っていた。

対処法

Stackoverflowに良さそうな情報が書いてありました。

ios - Resource files not updating with Xcode 5 - Stack Overflow

どうやら、ビルド時にフックして、Resource以下をtouchしてやれば良いらしい。

$ touch -cm ${SRCROOT}/../../YourResourceFolder

Run Scriptを追加する

Stackoverflowに書いてある方法と若干手順が違っているので注意

1. Target > Build Phase左上の+ボタンを押す

2. New Run Build Script Phaseを押し、Run Scriptを追加

Screen Shot 2014-07-11 at 19.55.40 .jpg

3. Run Script Phaseを以下のように設定する

Screen Shot 2014-07-11 at 19.55.51 .jpg

環境変数$SRCROOTはxcodeprojが置いてあるパスで、そこからの相対位置を指定することになる。

今回はcocos2d-xのプロジェクトに設定したため、以下のような階層構造となった。

Stackoverflowに書かれていたように設定すると、Resources以下に再帰的にディレクトリがあったときに上手く反映してくれなかったので、代わりにzshを使って*で指定している。

まとめ

これでビルドする度に自動的にリソースが更新されるようになってイライラしなくなった。もっと早く知りたい知見だった。

27
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?