iOSアプリ開発をしていると、急にビルドが失敗するようになったり、実機にアプリがインストールできなくなったりすることがあります。
そういうとき、DerivedDataフォルダを削除する良い、とか、XCodeのキャッシュを削除しましょうとかっていう記事を見て、よくわからないままとりあえずフォルダを削除して対処していました。
今後のためにと思い、これらのフォルダについて調べたのでまとめておきます。
- ~/Library/Developer/Xcode/DerivedData/
- ~/Library/Developer/Xcode/Archives
- シミュレーター内のデータ
- ~/Library/Developer/Xcode/iOS DeviceSupport
- ~/Library/Caches/com.apple.dt.Xcode
- ~/Library/Caches/org.carthage.CarthageKit
- CocoaPodsのキャッシュデータ
- 参考
~/Library/Developer/Xcode/DerivedData/
XCodeでアプリをビルドすると、~/Library/Developer/Xcode/DerivedData/
配下にアプリのビルドデータが保存されます。
$ ls ~/Library/Developer/Xcode/DerivedData/ BambooCIApp-bjyknapprndniagnlhzetakqdtvb ModuleCache.noindex
BambooCIAppはテスト用に作ったアプリで、このフォルダの下にこのアプリのビルドデータが保存されています。
ModuleCache.noindex
には複数のアプリで共通で使用するモジュールのデータが入っているそうです。
DerivedDataフォルダはアプリをビルドすることで生成されるので、削除しても安全です。
アプリのビルドがうまくいかないときは、このフォルダを削除してみるのが良いでしょう。
なお、ビルドデータを削除するということは、一からビルドし直すことになるので削除後の初回のビルドは時間がかかります。
~/Library/Developer/Xcode/Archives
XCodeのメニューバー > Product > Archiveをクリックすると、ローカルでアプリをアーカイブすることができます。
こうするとアーカイブデータが~/Library/Developer/Xcode/Archives
配下に保存されます。
$ 2019-07-11 2019-07-12 2020-02-06 2020-02-07 2020-02-10 2020-02-20
アーカイブデータの中にはdSYMなど有用なファイルが含まれますが、アーカイブフォルダは容量をかなり食うので、不要であれば削除するのが良さそうです。
シミュレーター内のデータ
シミュレーター内のアプリを削除しても、アプリを通じて保存されたファイルや写真、CoreDataデータなどは残ったままです。
これらを削除してシミュレーターをファクトリリセット状態にするには、シミュレーターのメニューバー > Device > Erase All content and settingsをクリックします。
これでシミュレーター内の不要なデータを削除できます。
~/Library/Developer/Xcode/iOS DeviceSupport
XCodeから実機にアプリをインストールすると、~/Library/Developer/Xcode/iOS DeviceSupport
フォルダに開発サポートのためのファイル群が保存されます。
このフォルダを削除しても特に問題は起きないので、Macのストレージ容量を確保したいときなどに削除すると良さそうです。
~/Library/Caches/com.apple.dt.Xcode
~/Library/Caches/com.apple.dt.Xcode
フォルダにはXCodeや周辺ツールのキャッシュデータが保存されています。
XCode周りで何か問題が起きたとき、Macのストレージ容量を確保したいときは、このフォルダを削除すると良さそうです。
~/Library/Caches/org.carthage.CarthageKit
Carthage関連のキャッシュデータは~/Library/Caches/org.carthage.CarthageKit
に保存されています。
Carthage関連で何か問題が起きたとき、Macのストレージ容量を確保したいときは、このフォルダを削除すると良さそうです。
CocoaPodsのキャッシュデータ
CocoaPodsではキャッシュデータを削除する専用のコマンドが用意されています。
$ pod cache clean --all