AskClean问净

如何在 Mac 上彻底卸载 Xcode,并保留项目与 dSYM

AskClean 团队 · 更新于 2026-11-02

要彻底卸载 Xcode,先保护好项目文件夹,以及已发布版本仍然需要的 Archives 或 dSYM。然后趁 Xcode 还装着,删除不再需要的模拟器运行时;把 Xcode 移到废纸篓;单独检查 DerivedData;如果 Homebrew 或其他编译工具还在用 Command Line Tools,就保留它。安全的流程只移除可以重建的开发者数据,而不是把 Library 里的每个文件夹都当成垃圾。

卸载 Xcode 之前,把归档和模拟器设备分开存放的 Mac 开发工作区示意图
彻底卸载 Xcode 的第一步,是把源码、发布版本相关的文件和模拟器状态,与可以重建的缓存分开。

卸载之前:盘点哪些归 Xcode,哪些不归

Xcode 不只是 /Applications/Xcode.app。App 包里装着 IDE 和自带的 SDK,而你的用户 Library 里可能还有 DerivedData、Archives、真机符号文件、模拟器运行时、模拟设备的状态、文档、预览和日志。源码仓库通常放在别处——常见的是“文稿”、某个工作区文件夹或 Git 检出目录——绝不能被当成 Xcode 残留。

先退出 Xcode 和模拟器。把仍需要的每个项目提交或备份好,包括本地包和未跟踪的素材。然后分别测量几个大类,而不是只看一个合在一起的 Developer 文件夹。用访达的“显示简介”就行;在“终端”里对每个具体路径运行 du -sh,可以得到一份只读的清单。不要一上来就用 sudo 或递归删除。

  1. 记下所有要保留的项目或工作区的位置,并核实它们的远程仓库或备份副本。
  2. 打开 Xcode 的 Window > Organizer > Archives,找出仍与 App Store、TestFlight、企业分发或客户版本有关的构建。
  3. 运行 xcode-select -p,查看命令行工具当前使用的开发者目录。
  4. 趁 Xcode 还装着,运行 xcrun simctl list runtimes 和 xcrun simctl list devices,弄清楚有哪些模拟器数据。
  5. 分别测量 DerivedData、Archives、iOS DeviceSupport 和 CoreSimulator,再决定删什么。

删除 Xcode.app 不会删除你的源码项目;删除项目文件夹才会。任何清理选择都要把项目路径排除在外。

清理之前,先保护 Archives、dSYM 和设备支持文件

~/Library/Developer/Xcode/Archives 里的归档不是普通的构建缓存。每个 .xcarchive 都可能包含当时的 App 构建,以及把线上崩溃地址还原成可读堆栈所需的 dSYM 符号。只要某个版本还在分发,就保留它的归档——除非你已经单独核实过,对应的符号另有保存、随时可以取回。

DeviceSupport 文件夹里是各个真机系统版本的符号和支持文件。匹配的设备再次连接时,它们通常可以重新生成,但下载或准备需要时间,而且排查旧崩溃时可能依赖完全对应的符号。CoreSimulator 下的模拟设备也可能保存着测试数据库、登录状态、截图和 App 状态,这些都不在版本控制里。

稳妥的默认做法很简单:保留 Archives、当前用得上的 DeviceSupport,以及你认得出、存有状态的模拟设备。如果只是暂时卸载 IDE,这几类可以留着,日后重装时还能用;如果要永久告别 Xcode,先把重要的归档存好,再按类别逐项移除其余部分。

通过访达移除 Xcode 本身

打开“应用程序”文件夹,确认选中的是 Xcode,然后把它移到废纸篓。如果你装了多个不同名称的副本,比如 Xcode-beta.app,要分别检查。移到废纸篓在清倒之前还留有恢复余地,也避免了 rm -rf 那种无法撤销的操作。

如果 xcode-select 指向的正是你刚移除的那个 App,命令行构建可能会失效,直到你安装或选择另一个开发者目录——这在预料之中。不要马上删除 /Library/Developer/CommandLineTools:即使完整的 Xcode IDE 已经不在,Git、Homebrew、各种语言工具链、构建脚本和软件包安装程序仍可能用到它。

如果要继续使用独立的 Command Line Tools,就保留它们,并确认 xcode-select -p 返回的是 /Library/Developer/CommandLineTools。如果你真的想移除全部 Apple 开发者工具,先排查所有会调用 clang、git、make、xcrun 或 SDK 工具的工作流。Command Line Tools 要单独决定,它不是自动跟着 Xcode 走的残留。

单独移除可以重建的 Xcode 缓存

DerivedData 是风险最低的大类,里面是与各个项目相关的索引、构建产物、日志和中间输出。删除它不会动到源码,但下一次索引和构建会更慢。Xcode 缓存和文档缓存的取舍大体相同:现在省下空间,以后再重建或重新下载。

先退出 Xcode,然后只把明确识别出的缓存文件夹移到废纸篓。一次处理一类,处理完重新测量。Archives 和源码文件夹不在这一步的范围内;也不要把整个 ~/Library/Developer 当成可以丢弃的东西——缓存、发布版本相关的文件和模拟器状态都混在里面。

决定模拟器运行时和模拟设备的去留

运行时是一个可以下载的操作系统映像;模拟设备则是一个实例,有自己的 App 数据和状态。删除旧运行时能省下好几个 GB,代价是将来要重新下载;删除模拟设备则可能毁掉本地测试数据。两者都在 CoreSimulator 下,后果却完全不同。

删除运行时和设备时,优先使用 Xcode 的 Settings > Components(Xcode 14–15 中叫 Platforms)或 simctl,因为它们了解模拟器的清单——而且要在把 Xcode 移到废纸篓之前做,因为这两种方式都需要 Xcode 还装着。不要手动从 CoreSimulator 里拖走随机命名的 UUID 文件夹。如果你打算近期重装 Xcode,保留当前的运行时可以省时间;如果要彻底告别开发环境,先导出需要的测试数据再删除。

清倒废纸篓之前先核对

在“应用程序”和聚焦搜索里查找其他 Xcode 副本,确认没有 Xcode 或模拟器进程还在运行,再运行一次 xcode-select -p。返回一个有效的 Command Line Tools 路径,说明开发者工具是被有意保留的;返回的路径指向已经移除的 Xcode,则说明当前的开发者目录需要处理。

把每一类的测量结果与最初的清单对照。确认项目文件夹在访达里仍然打得开,或者在核实过的备份里确实存在;确认需要的 Archives 和 dSYM 都还在。这之后才清倒废纸篓。macOS 的储存空间界面可能需要一段时间或一次重启,才会重新计算“系统数据”,所以请以实测的文件夹变化为准,而不是彩色的储存空间条。

AskClean 的“应用卸载”遵循同样的边界:它能找出应用本身、缓存、偏好设置、日志和已知的关联数据,而项目文件夹和受保护的开发者资产不会被自动选中。当好几个 Xcode 版本或多年的开发者数据让手动盘点难以理清时,先扫描再逐项核对会很有帮助。

Xcode 卸载安全对照表

Library 里的这些数据归属不同,恢复代价也不同;彻底卸载时应当保留这种区分。

项目常见位置安全的做法
源码项目你自己选定的项目文件夹保留。源码、素材、本地包和尚未推送的工作都不是 Xcode 残留。
Archives 与 dSYM~/Library/Developer/Xcode/Archives先核对。仍需分析崩溃的版本,要保留其符号。
DerivedData~/Library/Developer/Xcode/DerivedData可以重建。下一次索引和构建会更慢。
模拟器运行时Xcode Components / CoreSimulator可以重新下载。卸载 Xcode 之前,用 Xcode 或 simctl 删除。
模拟设备~/Library/Developer/CoreSimulator/Devices先核对。本地测试用的 App 数据和状态可能丢失。
Command Line Tools/Library/Developer/CommandLineTools如果 Git、Homebrew 或编译器还在用,默认保留。

以上是常见的 macOS 默认位置。Xcode 的安装位置、项目根目录和所选的开发者目录都可以自定义,删除之前请核实实际路径。

常见问题

卸载 Xcode 会删除我的项目吗?

把 Xcode.app 移到废纸篓,不会删除存放在别处的项目。真正危险的,是清理时把整个工作区、“文稿”文件夹、代码仓库或自定义的构建输出目录当成 Xcode 残留。先记下并备份项目路径。

可以删除整个 ~/Library/Developer 吗?

不可以。这里混着可以重建的 DerivedData、Archives/dSYM、设备支持文件、模拟器运行时、模拟设备状态和其他开发者数据。请按具体的子类别检查,而不是删除上级文件夹。

Command Line Tools 也要一起删吗?

只有在你不再需要 Git、clang、make、Homebrew 编译、各种语言工具链,以及依赖 Apple 开发者工具的脚本时才删。它独立于 Xcode 的 App 包,默认应当保留。

为什么删了 Xcode 之后“系统数据”还是很大?

Xcode.app 只是其中一部分。Archives、DerivedData、CoreSimulator、DeviceSupport、包管理器缓存、本地快照,以及与 Xcode 无关的应用数据,都可能还在。分别测量每一类,并给 macOS 一点重新计算的时间。

以后还能重装 Xcode 吗?

可以。App 和模拟器运行时都能重新下载。但重装无法找回没有备份的项目、线上版本的 dSYM、自定义的模拟器状态,以及其他已经没有来源的数据。

参考来源

相关的开发者存储任务