Xcode 関連ファイルを定期的に削除する
検証環境:
Xcode 12.2
Swift 5.3.1
Xcode のキャッシュファイルなどの関連ファイルはかなりのディスクスペースを消費するので定期的に削除するほうがよい。
DerivedData
中間生成ファイル。アプリ単位でビルド時に作成される。
ビルドが突然できなくなった場合などこれを消すと解消する場合がある。
rm -rf ~/Library/Developer/Xcode/DerivedData/*
iOS DeviceSupport
Xcode が iOS 実機端末との接続を認識したタイミングで作成される。
iOS バージョンをアップデートする度に新しいディレクリが増えていく。
全削除して問題なし。
$ l ~/Library/Developer/Xcode/iOS\ DeviceSupport/ 13.5.1 (17F80) 13.6 (17G68) 13.6 (17G68) arm64e 13.6.1 (17G80) arm64e 14.0 (18A373) 14.0.1 (18A393) 14.0.1 (18A393) arm64e 14.1 (18A8395) 14.1 (18A8395) arm64e 14.2 (18B92)
$ du -sh ~/Library/Developer/Xcode/iOS\ DeviceSupport/* 3.9G /Users/xyk/Library/Developer/Xcode/iOS DeviceSupport/14.2 (18B92) arm64e ...
1ディレクトリで数GB単位のサイズがあり、かなり大きいので Mac のバックアップする際などは事前に削除したほうがよい。
watchOS DeviceSupport
watchOS 用。
Xcode が Apple Watch とペアリングした iPhone との接続を認識したタイミングで作成される。
watchOS バージョンをアップデートする度に新しいディレクリが増えていく。
$ l ~/Library/Developer/Xcode/watchOS\ DeviceSupport/ Watch4,1 6.2.8 (17U63) Watch4,1 7.0.1 (18R395) Watch4,1 7.0.2 (18R402) Watch4,1 7.1 (18R590)
$ du -sh ~/Library/Developer/Xcode/watchOS\ DeviceSupport/* 398M /Users/xyk/Library/Developer/Xcode/watchOS DeviceSupport/Watch4,1 7.1 (18R590) ...
Archives
ipa 作成時に作成される。
$ l ~/Library/Developer/Xcode/Archives/ 2020-10-01 2020-09-29
Xcode のキャッシュ
$ l ~/Library/Caches/com.apple.dt.Xcode/ Cache.db Cache.db-shm Cache.db-wal CachedDesktopImageScaled.tif WebKit fsCachedData
あんまり大したサイズはなかった。
$ du -sh ~/Library/Caches/com.apple.dt.Xcode/ 345M /Users/xyk/Library/Caches/com.apple.dt.Xcode
CoreSimulator
以下ディレクトリに iPhone シミュレータのデバイスイメージとキャッシュがある。
~/Library/Developer/CoreSimulator/
シミュレータのデバイスイメージは 19GB、そして キャッシュは 9.5GB もあった。
$ du -sh ~/Library/Developer/CoreSimulator/* 9.5G /Users/xyk/Library/Developer/CoreSimulator/Caches 19G /Users/xyk/Library/Developer/CoreSimulator/Devices 0B /Users/xyk/Library/Developer/CoreSimulator/Temp
まずシミュレータのキャッシュは全削除でOK。
$ rm -rf ~/Library/Developer/CoreSimulator/Caches/dyld/
もう一方はシミュレータのデバイスイメージの一覧。
ディレクトリ名は一意に表す UUID が割り振られている。
$ l ~/Library/Developer/CoreSimulator/Devices/ 10D8C6FC-0616-4ADB-B8B9-28FC1FAFF147 1DFDFD00-B32E-4968-9D34-356825215C1C ...
UUID だと何のデバイスかわからないので以下コマンドで確認する。
$ xcrun simctl list == Device Types == iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s) iPhone 5 (com.apple.CoreSimulator.SimDeviceType.iPhone-5) ... == Runtimes == iOS 14.2 (14.2 - 18B79) - com.apple.CoreSimulator.SimRuntime.iOS-14-2 tvOS 14.2 (14.2 - 18K54) - com.apple.CoreSimulator.SimRuntime.tvOS-14-2 watchOS 7.1 (7.1 - 18R579) - com.apple.CoreSimulator.SimRuntime.watchOS-7-1 == Devices == -- iOS 14.2 -- iPhone 8 (2F64CE34-5CB4-4D8D-89A6-264273ADCC8C) (Shutdown) iPhone 8 Plus (893579BF-2A02-4867-9618-9C4AD9362AD3) (Shutdown) iPhone 11 (10D8C6FC-0616-4ADB-B8B9-28FC1FAFF147) (Shutdown) iPhone 11 Pro (F9DBE081-2A95-4D26-AC2F-B3CF3A04B013) (Shutdown) iPhone 11 Pro Max (28877C6F-B924-4809-8A6F-27B83F6C626D) (Shutdown) iPhone SE (2nd generation) (6607972D-4214-465A-AC03-EC8CB0127F5C) (Shutdown) iPhone 12 mini (636AFC6D-0447-45D8-AE92-BA4ECAEED0CE) (Shutdown) iPhone 12 (42D55001-838C-47F0-8299-B727825342E0) (Shutdown) iPhone 12 Pro (B90B1372-2F0B-4B1B-84D0-F60CD8A57B23) (Shutdown) iPhone 12 Pro Max (5F5833BD-5322-40E5-9656-F22EDFA725CB) (Shutdown) iPod touch (7th generation) (EB469B62-58B2-43C4-9768-BAB84646D437) (Shutdown) iPad Pro (9.7-inch) (7E6911CC-975E-44E5-92C7-E7F811982F95) (Shutdown) iPad Pro (11-inch) (2nd generation) (AF3AF7C1-5BBE-4DDB-B2AC-BC1DF68EE2B1) (Shutdown) iPad Pro (12.9-inch) (4th generation) (E3994BDC-7347-4F09-B0A0-B9ECD4A0A23A) (Shutdown) iPad (8th generation) (8BB4C077-FF15-41F1-8C15-D71AB8218123) (Shutdown) iPad Air (4th generation) (1DFDFD00-B32E-4968-9D34-356825215C1C) (Shutdown) -- tvOS 14.2 -- Apple TV (1F6EB2FF-E90F-4CB7-AE83-1F76A12726C5) (Shutdown) Apple TV 4K (AA26C080-1DBD-4EC3-A256-EBF612CBCFF4) (Shutdown) Apple TV 4K (at 1080p) (C73C7065-8071-45E9-BF5D-925715F2A900) (Shutdown) -- watchOS 7.1 -- Apple Watch Series 5 - 40mm (8DE67E08-C034-4DBD-8B19-67B29072796E) (Shutdown) Apple Watch Series 5 - 44mm (FB015CC5-2505-43A0-8F5B-C541A58780B7) (Shutdown) Apple Watch Series 6 - 40mm (2CBBADB8-423E-4607-89A2-48ED718AB815) (Shutdown) Apple Watch Series 6 - 44mm (A986F090-F738-43EA-BD89-1CB9AE52A181) (Shutdown) -- Unavailable: com.apple.CoreSimulator.SimRuntime.iOS-12-0 -- iPhone 5s (7F7A3FDF-7A0F-4879-B686-D68ED321909D) (Shutdown) (unavailable, runtime profile not found) iPhone 6 Plus (BD92CC35-10DB-43BE-AE03-3061B6A4541E) (Shutdown) (unavailable, runtime profile not found) ...
この中の== Devices ==
にUnavailable
となっているものがあれば使えなくなった過去のデバイスイメージなので削除してOK。
個別に削除するのは面倒なので、一括で削除できるコマンドがあるのでそれを使用する。
$ xcrun simctl delete unavailable
削除後は 212MBとかなり削減できた。
$ du -sh ~/Library/Developer/CoreSimulator/* 9.5G /Users/xyk/Library/Developer/CoreSimulator/Caches 212M /Users/xyk/Library/Developer/CoreSimulator/Devices 0B /Users/xyk/Library/Developer/CoreSimulator/Temp
ちなみにデバイス一覧表示は以下コマンドでもできる。
こちらは有効なデバイスのみ表示される。
シミュレータはデバイスタイプ(例: iPhone 12)とOSバージョン(例: iOS14)の組み合わせ毎に作成される。
$ xcrun xctrace list devices == Devices == ... == Simulators == Apple TV (14.2) (1F6EB2FF-E90F-4CB7-AE83-1F76A12726C5) Apple TV 4K (14.2) (AA26C080-1DBD-4EC3-A256-EBF612CBCFF4) Apple TV 4K (at 1080p) (14.2) (C73C7065-8071-45E9-BF5D-925715F2A900) iPad (8th generation) (14.2) (8BB4C077-FF15-41F1-8C15-D71AB8218123) iPad Air (4th generation) (14.2) (1DFDFD00-B32E-4968-9D34-356825215C1C) iPad Pro (11-inch) (2nd generation) (14.2) (AF3AF7C1-5BBE-4DDB-B2AC-BC1DF68EE2B1) iPad Pro (12.9-inch) (4th generation) (14.2) (E3994BDC-7347-4F09-B0A0-B9ECD4A0A23A) iPad Pro (9.7-inch) (14.2) (7E6911CC-975E-44E5-92C7-E7F811982F95) iPhone 11 (14.2) (10D8C6FC-0616-4ADB-B8B9-28FC1FAFF147) iPhone 11 Pro (14.2) (F9DBE081-2A95-4D26-AC2F-B3CF3A04B013) iPhone 11 Pro Max (14.2) (28877C6F-B924-4809-8A6F-27B83F6C626D) iPhone 12 (14.2) (42D55001-838C-47F0-8299-B727825342E0) iPhone 12 (14.2) + Apple Watch Series 5 - 44mm (7.1) (FB015CC5-2505-43A0-8F5B-C541A58780B7) iPhone 12 Pro (14.2) (B90B1372-2F0B-4B1B-84D0-F60CD8A57B23) iPhone 12 Pro (14.2) + Apple Watch Series 6 - 40mm (7.1) (2CBBADB8-423E-4607-89A2-48ED718AB815) iPhone 12 Pro Max (14.2) (5F5833BD-5322-40E5-9656-F22EDFA725CB) iPhone 12 Pro Max (14.2) + Apple Watch Series 6 - 44mm (7.1) (A986F090-F738-43EA-BD89-1CB9AE52A181) iPhone 12 mini (14.2) (636AFC6D-0447-45D8-AE92-BA4ECAEED0CE) iPhone 12 mini (14.2) + Apple Watch Series 5 - 40mm (7.1) (8DE67E08-C034-4DBD-8B19-67B29072796E) iPhone 8 (14.2) (2F64CE34-5CB4-4D8D-89A6-264273ADCC8C) iPhone 8 Plus (14.2) (893579BF-2A02-4867-9618-9C4AD9362AD3) iPhone SE (2nd generation) (14.2) (6607972D-4214-465A-AC03-EC8CB0127F5C) iPod touch (7th generation) (14.2) (EB469B62-58B2-43C4-9768-BAB84646D437)
Xcode 上でシミュレータ一覧を確認するには
メニュー -> Window -> Devices and Simulators -> Simulatorsタブ
から。
ここからシミュレータを個別に削除したり新たに追加できたりする。
以下は以前書いたシミュレータ関連の記事。
Carthage のキャッシュ
Xcode とは関係ないが Carthage でライブラリ管理している場合。
$ du -sh /Users/xyk/Library/Caches/org.carthage.CarthageKit/DerivedData/* 4.8G /Users/xyk/Library/Caches/org.carthage.CarthageKit/DerivedData/11.6_11E708 4.8G /Users/xyk/Library/Caches/org.carthage.CarthageKit/DerivedData/11.7_11E801a 4.8G /Users/xyk/Library/Caches/org.carthage.CarthageKit/DerivedData/12.0_12A7209 5.1G /Users/xyk/Library/Caches/org.carthage.CarthageKit/DerivedData/12.2_12B45b 4.2G /Users/xyk/Library/Caches/org.carthage.CarthageKit/DerivedData/12.4_12D4e
Xcode のバージョン毎にギガ単位サイズのキャッシュができている。
キャッシュサイズは使用するライブラリ数で変わってくるかと思う。
昔のバージョンのものは削除。
$ rm -rf /Users/xyk/Library/Caches/org.carthage.CarthageKit/DerivedData/11*