Mac开发者阅读约需 4 分钟

如何清除 Xcode DerivedData、档案和模拟器

Xcode 可能占用数十 GB。以下是如何安全删除 Mac 上的 DerivedData、旧存档、设备支持文件以及未使用的模拟器和运行时。

已更新 · 由 spacerecover 团队撰写

如果您为 Apple 平台构建应用程序,除了照片外,Xcode 可能是 Mac 上占用空间最多的内容。它的安装文件本身就很大,但真正的增长来自构建输出、档案、设备支持文件和模拟器。其中大部分占用的空间都可以安全释放。

您可以在 系统设置 > 常规 > 存储 > 开发人员 中查看粗略总计。

DerivedData:构建输出和索引

DerivedData 保存您打开的每个项目的中间构建文件、索引和模块缓存。它随着每个项目、分支和 Xcode 版本的增长而增长,并在您构建时完全重新生成。

清除它:

  1. 退出 Xcode。
  2. 在 Finder 中,选择“前往 > 前往文件夹”并输入 ~/Library/Developer/Xcode/DerivedData。
  3. 将里面的文件夹移至废纸篓,然后将其清空。

或者在终端中:

rm -rf ~/Library/Developer/Xcode/DerivedData/*

当 Xcode 重建和重新索引时,预计每个项目的下一个构建将花费更长的时间。您可以在 Xcode > 设置 > 位置 中查看或更改 DerivedData 位置。

归档:保留已发布版本的记录

每次您选择 Product > Archive 时,Xcode 都会存储存档,包括调试符号。您需要这些调试符号,对已发布版本的崩溃报告进行符号化,因此不要盲目地将它们全部删除。

  1. 打开 窗口 > Organizer 并选择 档案。
  2. 右键单击从未发布的版本或不再使用的版本的存档,然后选择 删除。

档案位于 ~/Library/Developer/Xcode/Archives,按日期组织。

设备支持文件

当您连接运行新操作系统版本的物理设备时,Xcode 会将该版本的调试符号复制到 ~/Library/Developer/Xcode/iOS DeviceSupport(以及 watchOS 和其他平台的类似文件夹)中。每个可能有几GB。

删除不再测试的操作系统版本的文件夹。如果您再次连接具有该版本的设备,Xcode 会重新创建它们。

模拟器和模拟器运行时

模拟器存储在 ~/Library/Developer/CoreSimulator/Devices 中,每个模拟设备内都有应用程序的数据。运行时(模拟操作系统版本)单独存储并且很大。

删除其对应运行时已不再安装的模拟器:

xcrun simctl delete unavailable

在 窗口 > 设备和模拟器 > 模拟器 中删除单个模拟器:右键单击模拟器并选择 删除。

在 Xcode > 设置 > 组件 中删除模拟器运行时(在某些 Xcode 版本中称为 平台)。选择不再需要的运行时,然后单击 减号 (–) 按钮。您还可以从终端列出和删除运行时:

xcrun simctl runtime list
xcrun simctl runtime delete <runtime-identifier>

如需重置模拟器内容而不删除模拟器本身,请在模拟器应用中使用设备 > 抹掉所有内容和设置。

旧的 Xcode 版本

如果为了兼容性而保留多个 Xcode 版本,那么每个版本都会很大。删除 /Applications 中不再需要的副本。

缓存

Xcode 还将缓存保存在 ~/Library/Caches/com.apple.dt.Xcode 中,Swift Package Manager 将下载的包保存在 ~/Library/Caches/org.swift.swiftpm 中。两者均根据需要重建。清除它们之前先退出 Xcode。

对于其他工具,例如 CocoaPods、Homebrew、npm 和 Gradle,请参阅清除 Mac 上的开发人员缓存。

常见问题

删除 Xcode DerivedData 是否安全?

是的。 DerivedData 仅包含 Xcode 重新生成的构建输出、索引和缓存。首先退出 Xcode。您的下一个构建在重建时会变慢。

我可以删除 Xcode 存档吗?

您可以删除从未发布的版本的存档。如果您需要调试符号来读取崩溃报告,请保留已发布版本的存档。

什么是 iOS DeviceSupport?我可以删除它吗?

它包含从物理设备复制的调试符号。删除不再测试的操作系统版本的文件夹;当您连接运行该版本的设备时,Xcode 会重新创建它们。

希望我们帮您完成?

spacerecover 查找 Xcode DerivedData、档案和模拟器数据以及 Homebrew、npm、Gradle、CocoaPods、pip 和 Swift 包缓存,说明哪些内容会重新生成,绝不改动您的项目。归档文件和模拟器始终会列出供您检查。

资料来源和延伸阅读

继续