开发者磁盘清理

如何安全清理 Xcode Derived Data

了解 Xcode Derived Data 包含哪些内容、什么时候可以删除,以及如何只清理单个项目或整个目录而不影响源代码

发布于 2026年8月10日更新于 2026年8月12日作者: Harry
开发者在释放磁盘空间前检查 Xcode 生成的构建数据

Xcode Derived Data 可以安全删除。默认目录里保存的是 Xcode 能够重新生成的构建产物和索引,删除后不会丢失项目源代码,代价只是下一次构建和代码索引需要更长时间。

真正需要注意的是清理范围:先退出 Xcode,并确认删除的是 ~/Library/Developer/Xcode/DerivedData,不要误删 Archives、模拟器设备数据或项目目录。

本文路径与检查命令于 2026 年 8 月 10 日在 macOS 15.7.7、Xcode 16.2 环境验证。Xcode 菜单可能随版本调整,但只要没有自定义构建位置,默认 Derived Data 路径和下文的终端方法仍然适用。

Xcode Derived Data 是什么?

Xcode 会把构建项目和理解代码时生成的文件放入 Derived Data,常见内容包括:

  • 编译结果和中间构建文件
  • 用于代码跳转、搜索和补全的索引
  • 构建日志及其他项目级辅助数据
  • 当前工作区使用的 Swift Package 本地检出和相关构建数据

Apple 的文档说明工作区索引位于独立的 Derived Data 目录中,Xcode 发布说明也会在部分构建故障的恢复步骤中建议清理对应项目的 Derived Data。换句话说,这个目录应当可以重新生成,不应该作为源代码的唯一保存位置。

以下情况适合考虑清理:

  • 已经不用的旧项目留下了数 GB 构建数据
  • Xcode 反复使用过期构建结果
  • 代码补全或索引状态异常
  • Xcode 升级后,Package 或 Macro 构建失败
  • 当前更需要磁盘空间,可以接受首次重建变慢

不要因为 Derived Data 存在就定期清空。正在开发的项目可以利用增量构建数据缩短编译时间;一个体积很小且工作正常的目录没有清理价值。

哪些内容可以安全删除?

位置建议删除后的影响
~/Library/Developer/Xcode/DerivedData/项目名-*可清理确认过的单个项目该项目需要重新构建和索引
~/Library/Developer/Xcode/DerivedData 内的全部内容需要彻底重置时可以清理所有 Xcode 项目都需要重新构建和索引
~/Library/Developer/Xcode/Archives不要当作缓存清理可能丢失用于分发或崩溃分析的归档与匹配调试符号
~/Library/Developer/CoreSimulator/Devices必须单独检查可能丢失模拟器应用、设置和测试数据
Git 仓库或项目目录不要删除这里保存的才是源代码和项目配置

清理前还应打开 Xcode 的 Settings → Locations。如果 Derived Data 被设置成 Custom,请以这里显示的路径为准,不要直接套用默认目录。

方法一:通过 Finder 清理 Derived Data

如果希望先看清每个项目目录再删除,Finder 是最直观的方式。

  1. 保存工作,停止正在运行的构建和测试。
  2. 打开 Xcode → Settings → Locations
  3. 找到 Derived Data,点击路径旁的箭头,在 Finder 中打开目录。
  4. 退出 Xcode。
  5. 只把存在问题或已经不用的项目目录移到废纸篓;需要完全重置时,再移动 Derived Data 目录内的全部内容。
  6. 重新打开 Xcode 并构建项目。

先移到废纸篓可以保留一个短暂的恢复机会。确认项目能够正常打开和重新构建后,再清空废纸篓。

方法二:通过终端检查和清理

先确认目录和总占用:

du -sh "$HOME/Library/Developer/Xcode/DerivedData"
du -sh "$HOME/Library/Developer/Xcode/DerivedData"/* 2>/dev/null | sort -h

每个项目目录通常以可识别的项目名开头,后面跟着一段唯一标识。可以先在 Finder 中打开检查:

open "$HOME/Library/Developer/Xcode/DerivedData"

如需永久删除单个项目,请把示例目录名替换成自己输出中的完整名称:

rm -rf "$HOME/Library/Developer/Xcode/DerivedData/YourProject-xxxxxxxxxxxxxxxxxxxxxxxxxxxx"

如需永久删除默认 Derived Data 目录内的所有项目:

find "$HOME/Library/Developer/Xcode/DerivedData" \
  -mindepth 1 -maxdepth 1 -exec rm -rf {} +

这些命令不会经过废纸篓。按下回车前必须重新阅读完整路径;Xcode 正在构建、测试或索引时,不要执行最后一条命令。

方法三:先尝试 Clean Build Folder

如果只是单个项目构建异常,并不需要同时删除索引和其他工作区数据,可以先在 Xcode 中执行 Product → Clean Build Folder。Apple 也在故障排查文档中使用过这个操作。

工作区对应的命令行写法类似:

xcodebuild \
  -workspace YourApp.xcworkspace \
  -scheme YourApp \
  clean

它的范围比删除整个 Derived Data 目录更小:只是让当前构建系统清理指定项目的构建产物,不是对所有 Xcode 工作区进行磁盘清理。

清理后会发生什么?

第一次构建通常会明显变慢。Xcode 需要重新编译 Target、创建代码索引,还可能重新解析或下载 Package 数据。在索引完成前,代码补全和跳转也可能暂时不完整。

项目文件、Git 历史、签名证书、Provisioning Profile 和 Xcode Archives 都不在默认 Derived Data 根目录中。只删除本文给出的准确路径时,它们不会受到影响。

如果完整重建后原来的错误再次出现,Derived Data 很可能不是根因。此时应检查第一条有意义的编译错误、依赖解析、当前使用的 Xcode 版本和项目 Build Settings,不要继续反复清缓存。

使用 MangoDisk 检查 Xcode Derived Data

如果更习惯先查看大小和准确位置,再决定是否清理,MangoDisk 深度清理中包含独立的 Xcode Derived Data 规则。

这条规则刻意保持了很窄的边界:只处理默认的 ~/Library/Developer/Xcode/DerivedData 根目录,要求先关闭 Xcode,并且不会默认选中。它不包含项目源码、Archives、签名材料、模拟器设备或已安装的模拟器运行时。扫描完全在本地进行,清理前需要由你检查结果并确认。完整的确认和清理历史流程可以参考 MangoDisk 安全指南

常见问题

Xcode 打开时可以删除 Derived Data 吗?

不要在构建、测试或索引时删除。先退出 Xcode,避免清理过程中相关文件仍在被写入。

删除 Derived Data 能修复所有 Xcode 构建错误吗?

不能。它适合处理过期或状态不一致的生成数据,但无法修复源代码错误、签名无效、依赖缺失或错误的构建设置。

多久应该清理一次?

只有在能够释放明显空间,或者有证据表明构建数据已经异常时才需要清理。每次构建后清空健康的 Derived Data 没有收益。

为什么清理后目录又出现了?

这是正常现象。只要再次构建项目或执行索引,Xcode 就会重新创建 Derived Data。清理的目的是移除旧的生成数据,而不是关闭后续构建缓存。

参考资料

希望先用可视化方式检查开发工具生成的数据,再决定清理哪些内容?可以下载 MangoDisk,在本地运行深度清理。

Xcode Derived DataXcode 缓存macOS开发者磁盘清理
全部文章