Xcode 太占空间?用 PureMac 清理前,先分清缓存、归档和模拟器
清理 Xcode 之前,分清可重建的缓存、发行归档与 dSYM,以及模拟器缓存和运行时。
文章目录
Xcode 用久了,空间占用往往不只来自 /Applications 里的应用本体。项目构建数据、发行归档、模拟器缓存和下载的系统运行环境,都可能留在磁盘上。它们的处理方式差别很大:有些删掉后可以重新生成,有些关系到旧版本的崩溃排查,还有些删除后要重新下载。
PureMac 的 Xcode Junk 分类可以集中列出这些占用。这个使用 SwiftUI 编写的开源工具,让你少翻几个隐藏目录;但分类名里的 Junk,不能替你判断某份开发资料是否已经没用。
尤其要留意 PureMac 3.0.0 的默认选择:DerivedData、Archives、模拟器缓存等目录扫描出来时会预先勾选,下载的 simulator runtime 则默认不勾选。如果 Mac 上有发布过的应用,进入清理结果后先取消 Archives 的勾选。
DerivedData:可以重建,代价是下一次重新构建
常见路径是:
~/Library/Developer/Xcode/DerivedData
这里存放项目的构建产物和中间数据等派生内容。项目持续开发,相关数据也会重新生成。清掉它通常能腾出一部分空间,但下次打开、构建项目时需要重新生成相应数据,不能把这一步理解成让编译永久变快。
已经不再维护的实验项目,可以优先检查它们留下的目录;正在迭代的项目,保留构建数据往往更方便。若只是某个项目出现构建异常,也应围绕该项目处理。Apple 的 Xcode 26 发行说明 在特定构建问题的处理步骤中,采用的就是清理该项目的 DerivedData,再重新构建。
PureMac 3.0.0 在这个分类中把 DerivedData 整个目录作为一个扫描条目。准备只处理旧项目时,应先取消这个条目,再打开对应目录辨认项目,按需处理。不要看到列表里只有一行,就以为这一行只涉及一个项目。
操作前结束正在运行的构建、测试和预览,关闭相关 Xcode 窗口。若项目使用了自定义派生数据路径,还需要检查实际位置;默认目录的扫描结果不能代表磁盘上所有构建数据。
Archives:先确认它对应哪个发行版本
归档通常位于:
~/Library/Developer/Xcode/Archives
它和临时构建数据的用途不同。Xcode 为分发应用创建归档时,会把应用二进制文件和 dSYM 符号文件收进归档。线上用户后来报告崩溃,排查可能仍需这些资料。
Apple 在崩溃报告符号化文档中要求保留每个已分发构建的 Xcode 归档。二进制文件与 dSYM 必须具有相同的构建 UUID,才能正确配对。即便源代码还在,换一个 Xcode 版本或构建设置重新编译,也不能假定新生成的 dSYM 能解释旧版本的崩溃。
因此,“代码已推到 Git”不足以成为删除发行归档的依据。Git 保存的源码和一次具体发布产生的二进制、符号文件,各自有用途。
整理 Archives 时,可以先在 Xcode Organizer 中查看归档对应的项目、版本和日期。从未分发、也不会继续使用的试验构建,可以逐份判断是否保留;仍有用户使用的正式版、正在测试的 TestFlight 构建,应保留对应资料。若把它们转移到外置存储或团队归档位置,先确认完整归档能够读取,再处理本机副本。
PureMac 的 Archives 条目指向整个目录,不会因为文件较旧就知道你是否还需要追查那个版本。不要用这一行完成发行归档的批量取舍。
模拟器缓存和 runtime,要分开看
PureMac 会扫描 ~/Library/Developer/CoreSimulator/Caches。缓存清理和删除下载的系统运行环境,是两种操作。
Apple 对 Simulator runtime 的说明是:它是模拟器启动设备时加载的操作系统包,对应特定系统和版本;多个不同设备型号的模拟器可以使用同一个 runtime。也就是说,列表里的某个 iOS runtime,不只是某一台“虚拟 iPhone”的缓存。
准备清理前,先看测试需要覆盖哪些系统版本。旧系统上的布局、权限或兼容性问题,可能仍需要对应 runtime 才能复现。确认某个版本已经退出测试范围后,再考虑移除。删除后想重新使用,需要重新下载和安装,离线工作时尤其要提前作出取舍。
PureMac 3.0.0 使用 xcrun simctl runtime list -j 获取 runtime 列表,按条目调用 xcrun simctl runtime delete 删除,并默认让用户自行勾选。它没有把 runtime 当普通目录直接删掉。扫描没有列出 runtime,也不能说明机器上没有这些数据:开发工具配置或命令执行失败,都可能让列表缺失。
更习惯 Xcode 自带管理界面的用户,可以在 Settings 的 Components 中检查和移除不再需要的组件。具体按钮位置随 Xcode 版本变化,按 Apple 的组件管理文档操作即可。不要为了追求空间回收,绕过工具去手工删除系统保护目录。
此外,模拟器设备里安装的测试 App、登录状态和测试数据,也不能一概称为缓存。PureMac 的缓存目录扫描,不等于替你整理了所有模拟器设备内容。
完成一次清理后,回到项目验证
第一次用 PureMac 处理开发空间,可以先做一次扫描,展开 Xcode Junk,逐项查看路径和大小。取消 Archives 及需要保留的条目,只选择已经确认用途的目录;runtime 则按测试版本逐个决定。
这个分类还可能列出 DeviceSupport、XCTestDevices、SwiftUI Previews 和 Swift Package Manager 相关目录。它们分别涉及设备支持数据、测试设备、预览和依赖缓存。若当天还要连接设备、跑测试或离线构建,就先保留相关数据,等工作结束后再整理。
执行前要确认恢复方式。PureMac 的常规分类清理会直接删除选定内容,runtime 也通过命令移除,不能指望从废纸篓撤销。需要保存的归档应先转存并验证;能够重建的内容,也要接受重新构建或下载的成本。
清理结束后,重新打开正在维护的项目,完成一次构建,启动仍需使用的模拟器,并确认必要的发行归档还在。若 DerivedData 很快重新长大,也不必反复清空:活跃项目本来就需要构建数据,下一次更值得检查的是已经停用的项目和不再使用的系统版本。
PureMac 可从 3.0.0 下载页获取,要求 macOS 13 或更高版本。把它用作开发目录的占用清单,逐项决定保留和删除,会比直接接受整组默认选择更适合有持续开发任务的 Mac。