如何安全清理 Xcode DerivedData
DerivedData 是 Xcode 存放构建产物和索引的地方,里面的东西 Xcode 都能重新生成。只要 Xcode 和正在跑的构建都停了,就可以删,只是下次构建和索引会慢一些。Xcode Archives 和你的项目文件夹别动,它们放在别处,删了就回不来。
要点
- 简单说: DerivedData 里的东西 Xcode 都能重新生成,等 Xcode 和正在跑的构建停下就可以删,下次构建会慢一些。
- 注意: 不要动 Xcode Archives 和你的项目文件夹,它们在别处,删了无法重新生成。
- 用 Mint: Mint 在 Safe to clean 下按项目列出 DerivedData。Xcode 能把它全部重新生成,所以这些行默认勾选。
DerivedData 在哪里
默认位置是 ~/Library/Developer/Xcode/DerivedData,每个项目或 workspace 各占一个文件夹。文件夹名是项目名加一串随机字符,很好认。在 Xcode 里也能打开:进入“设置”里的“Locations”,点 DerivedData 路径旁边的小箭头。
Archives 就在隔壁的 ~/Library/Developer/Xcode/Archives。里面是你导出过的构建,还有读懂这些构建崩溃报告所需的符号文件,所以不要把它们算进这次清理。
手动删除
如果只是某个项目出了毛病,删掉这个项目对应的文件夹就行。如果是想腾空间,就按日期排序,把很久没打开过的项目文件夹删掉。
- 等正在跑的构建、测试和预览结束,然后退出 Xcode。
- 打开 DerivedData 文件夹,看看每个文件夹的名称、日期和大小。
- 把挑好的项目文件夹移到废纸篓。
- 打开当前项目,等 Xcode 索引和构建完成后,再清空废纸篓。
Mint 能帮你做什么
Mint 的 Disk 页会把 DerivedData 列在 Safe to clean(可安全清理)下面,拆成多行,可以按项目挑。Xcode 能把这些全部重新生成,所以这些行默认勾选。按 Clean 之前,先等构建结束、退出 Xcode,或者把正在构建的项目取消勾选。
Clean 确认一次后就永久删除勾选的行。构建产物就算移进废纸篓,不清空也腾不出空间。同一次扫描还会找出模拟器缓存、包管理器缓存和 node_modules 文件夹。
常见问题
Xcode DerivedData 可以放心删除吗?
可以,只要当时没有构建在跑。Xcode 会重新生成它,代价是下次构建慢一些,还得重新索引一遍。
删除 DerivedData 会删掉我的代码吗?
不会,源代码在你的项目文件夹里。删之前核对一下路径,别误选了项目文件夹或 Archives。
App Store 版的 Mint 能清理 DerivedData 吗?
不能。App Store 版访问不到 ~/Library,所以清理 DerivedData 只在 Direct 版和 Setapp 版里提供。
看看你的 DerivedData 有多大
在 Mint 里扫描一次,打开 Safe to clean,把不再需要的项目文件夹删掉。