post Image
iOSアプリ開発でのキャッシュ削除方法まとめ

はじめに

以下のキャッシュ情報を削除する方法をまとめました。チートシート的にコピペして使って頂ければと思います。

様々なキャッシュの削除方法を知っておくことで、リンクがうまくできない、画像などのリソースファイルが更新されない、Xcodeのコード補完がでない、エラーが解消できない、など問題が起こった際の手助けになります。

  • Xcode
  • llvm/clang
  • Homebrew
  • SwiftLint
  • CocoaPods
  • Carthage
  • Fastlane

Note: キャッシュファイルの削除は自己責任でお願いいたします。

Xcodeのキャッシュ削除

Xcode.appのキャッシュ削除

rm -rf ~/Library/Caches/com.apple.dt.Xcode/

Tip: Xcodeがフリーズする場合などに解決策として使われるコマンドのようです。

クリーンビルド

xcodebuild clean
xcodebuild -alltargets clean

xcodebuildのヘルプには以下のように記載されています。

Remove build products and intermediate files from the build root (SYMROOT).

DerivedData(中間生成ファイル)の削除

後述するDerivedDataディレクトリ配下を削除します。

rm -rf ~/Library/Developer/Xcode/DerivedData/

Tip: 個人的に開発中にもっとも使うことの多いコマンドです。
~/.bashrcファイルにエイリアスを定義してcleanだけで簡単に実行できるようにしています。

~/.bashrc
alias clean='rm -rf ~/Library/Developer/Xcode/DerivedData'

Xcode Toolsによるキャッシュ削除

xcrun --kill-cache
# もしくは
xcrun -k

xcrunのドキュメントには以下のように記載されています。

Removes the cache. Causes all values to be re-cached.

simctlによるシミュレータの設定削除

シミュレータにインストールしたアプリ、設定を削除

xcrun simctl erase all

iOS DeviceSupportのキャッシュ削除

rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport/*/Symbols/System/Library/Caches    

llvm/clangのキャッシュ削除

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang.$(whoami)/ModuleCache"

Tip: getconf DARWIN_USER_CACHE_DIRコマンドにより、/var配下の動的なキャッシュ領域の場所を出力しています。

出力例
$ getconf DARWIN_USER_CACHE_DIR
/var/folders/62/nrp34pc96t560_hhml86hmwrr_q2rc/C/

その他OSSライブラリのキャッシュ削除

Homebrewのキャッシュ削除

rm -rf ~/Library/Caches/Homebrew
brew cleanup -s
rm -rf $(brew --cache)

SwiftLintのキャッシュ削除

rm -rf ~/Library/Caches/SwiftLint

CocoaPodsのキャッシュ削除

pod cache clean --all

Carthageのキャッシュ削除

rm -rf ~/Library/Caches/org.carthage.CarthageKit 
rm -rf ~/Library/Caches/carthage

Fastlaneのキャッシュ削除

spaceshipで利用されるクッキーファイルを削除します。

rm ~/.fastlane/spaceship/**/cookie

補足:DerivedDataとは

DerivedDataとはXcodeで生成される中間生成ファイルが保存されるディレクトリの名前です。デフォルトの設定では以下の場所に保存されます。

~/Library/Developer/Xcode/DerivedData/

ビルド時の中間生成ファイルとして以下のようなものが保存されます。

  • ビルド時に生成されるバイナリファイルやデータファイル
  • インデックス情報
  • ビルドやテストなどのログ
  • ソースコードのシンボル情報

以下の順に削除範囲が広くなっていきます。

  • Product > Cleanコマンド
    (DerivedData内の現在のターゲットのBuildフォルダ配下の全てのファイルを削除)

  • Product > Clean Build Folderコマンド
    (DerivedData内の各ターゲットのBuildフォルダを削除)

  • rm -rf ~/Library/Developer/Xcode/DerivedData/
    (DerivedDataディレクトリ配下を全て削除)

参考


『 Swift 』Article List