如何安全清理 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。里面是你导出过的构建,还有读懂这些构建崩溃报告所需的符号文件,所以不要把它们算进这次清理。

模拟器运行时和设备数据需要不同的处理方式

我们第一次为什么算错了模拟器占用

手动删除

如果只是某个项目出了毛病,删掉这个项目对应的文件夹就行。如果是想腾空间,就按日期排序,把很久没打开过的项目文件夹删掉。

  1. 等正在跑的构建、测试和预览结束,然后退出 Xcode。
  2. 打开 DerivedData 文件夹,看看每个文件夹的名称、日期和大小。
  3. 把挑好的项目文件夹移到废纸篓。
  4. 打开当前项目,等 Xcode 索引和构建完成后,再清空废纸篓。

Mint 能帮你做什么

Mint 的 Disk 页会把 DerivedData 列在 Safe to clean(可安全清理)下面,拆成多行,可以按项目挑。Xcode 能把这些全部重新生成,所以这些行默认勾选。按 Clean 之前,先等构建结束、退出 Xcode,或者把正在构建的项目取消勾选。

Clean 确认一次后就永久删除勾选的行。构建产物就算移进废纸篓,不清空也腾不出空间。同一次扫描还会找出模拟器缓存、包管理器缓存和 node_modules 文件夹。

Safe to clean 是怎么工作的(英文)

常见问题

Xcode DerivedData 可以放心删除吗?

可以,只要当时没有构建在跑。Xcode 会重新生成它,代价是下次构建慢一些,还得重新索引一遍。

删除 DerivedData 会删掉我的代码吗?

不会,源代码在你的项目文件夹里。删之前核对一下路径,别误选了项目文件夹或 Archives。

App Store 版的 Mint 能清理 DerivedData 吗?

不能。App Store 版访问不到 ~/Library,所以清理 DerivedData 只在 Direct 版和 Setapp 版里提供。

看看你的 DerivedData 有多大

在 Mint 里扫描一次,打开 Safe to clean,把不再需要的项目文件夹删掉。

扫描开发者文件