mfks17's blog(Life is Good !!)

趣味や思った事を書いていくと思います

iOSアプリでシミュレータでリソースの変更が反映されないときにやること

こんにちは!!

何度もやっていて、調べるのがだるくなってきたのでメモ。(DRY)

手順1

なにはなくとも、クリーン

ショートカットコマンドはデフォルトだと

⌘ + ⇧ + k

メニューからは、

手順2

Xcodeの再起動

みなさんも、よくやっているのではないでしょうか?

手順3

シミュレータないの設定とコンテンツの削除

シミュレータのメニューから選択

確認のアラートがでるのでResetを選択

しばらく待つと、インストールされていたアプリが消えて、設定もリセットされている。

手順4

シミュレータのDerived Dataを消す

実機インストールとは違い、シミュレータの.appファイルはMac上に存在します。

こいつのPathはここから確認ですます。

こんな感じですが(上記は実際には実機用のアプリのpathなので下記に示したものが正確なものです。)

正確には、

DerivedData/アプリ名-hash値/Build/Products/Configuration名-iphonesimulator/アプリ名.app

となっています。あえてDerivedDataから記述した理由は、変更出来るからです。

Pathが分かり辛いから変更したい、という方は以下の手順で変更ができます。

XcodeのPreferences…からLocationタブを選択します。

Derived DataのドロップダウンボックスをCustomに変更します。

そして、Pathを好きなところします。

Advanced...から色々設定が選べます。

ここで、本題に戻ると

リソースが同じファイル名で更新されたとして、それをシミュレータで実行した際に同じところに.appが生成されます。

実行時のコストの削減としてキャッシュとして持っているのだと思います。

そして、DerivedData/アプリ名-hash値/Build/Products/Configuration名-iphonesimulator配下のアプリ名.appを消してやれば、うまくいくと思います。

注意

今回は、前提条件としてリソースがきちんとバンドルされていることとしました。

最後までお読みいただきありがとうございました。