Xcode 占用空间太大:哪些可以安全删除
Xcode 本身就要占好几 GB,而它留下的东西往往大得多:构建文件夹、模拟器、模拟器运行时,以及你连接过的每台设备的调试符号。
一句话:DerivedData、Device Support 文件夹、预览模拟器和不再使用的模拟器都可以安全删除:Xcode 需要时会重新构建或下载。归档(Archives)除非确定以后用不到,否则请保留。
Xcode 的数据都存在哪里?
~/Library/Developer/Xcode/DerivedData:你打开过的每个项目的构建产物和索引。安全:下次构建时会重新生成,只是那一次会慢一些。~/Library/Developer/Xcode/iOS DeviceSupport(以及watchOS、tvOS、macOS和visionOS对应的文件夹):从你连接过的每台设备、每个系统版本复制来的调试符号。安全:下次连接该设备时会重新复制。~/Library/Developer/CoreSimulator/Devices:你的模拟器,以及装在里面的应用和数据。运行时已经不在的模拟器纯属白占空间。- 模拟器运行时(供模拟器使用的一整套 iOS、watchOS 或 visionOS,每个都有好几 GB)。macOS 把它们算作“系统数据”,而不是 Xcode。
~/Library/Developer/Xcode/UserData/Previews:为 SwiftUI 预览创建的模拟器。安全:会自动重新创建。~/Library/Developer/CoreSimulator/Caches和~/Library/Developer/XCTestDevices:模拟器缓存,以及并行测试时克隆出来的模拟器。安全。~/Library/Developer/Xcode/Archives:你为 App Store 或 TestFlight 归档的每一次构建。需检查:见下文。
怎么删除 DerivedData?
- 退出 Xcode。
- 在“访达”中选择“前往”›“前往文件夹”(Shift-Command-G),粘贴
~/Library/Developer/Xcode/DerivedData。 - 选中里面的文件夹,移到废纸篓。要真正释放空间,请清倒废纸篓。
在“终端”里用下面这条命令效果相同,但会跳过废纸篓,无法撤销:
rm -rf ~/Library/Developer/Xcode/DerivedData/*
怎么删除旧的模拟器和模拟器运行时?
交给 Xcode 自带的工具来做,这样它的模拟器列表才不会出错:
xcrun simctl delete unavailable
xcrun simctl runtime list
xcrun simctl runtime delete <runtime identifier>
第一行删除运行时已不再安装的模拟器。后两行列出已安装的运行时,并删除你不再用来测试的那个。也可以在 Xcode › Settings › Components(旧版 Xcode 中是 Platforms)里删除运行时,在 Window › Devices and Simulators 里删除单个模拟器。
iOS DeviceSupport 可以安全删除吗?
可以。每个文件夹存放一种设备和系统版本的符号,让 Xcode 在你用该设备调试时能显示可读的堆栈信息。把你的设备已经不再运行的那些版本的文件夹删掉即可。以后如果又连接了这样的设备,Xcode 会重新复制符号,需要几分钟。
Xcode 的归档(Archives)要不要删?
只删你确定不需要的。一个归档保存着你发布的那次构建本身及其调试符号(dSYM)。没有它,你就无法把该版本的崩溃报告转成可读的堆栈信息,也无法再次导出那次构建。比较稳妥的原则是:还有用户在用的版本,就保留它的归档。
为什么清理完一周后空间又没了?
DerivedData 每次构建都会重新变大,新版 Xcode 或 iOS 又会带来新的运行时和设备支持文件。这很正常:这些文件夹本来就是缓存。偶尔清一清,或者在磁盘快满时清理一下就够了。