卸载 Mac 上的 Xcode,留下还需要的工具和归档
卸载 Xcode 前,先分清是以后不再做 Apple 平台开发,还是只想移除体积很大的编辑器,Xcode 应用、单独安装的 Command Line Tools、模拟器运行时和发布归档是不同的东西。一起删除,可能让原本能用的构建环境失效,也可能丢掉以后还需要的符号文件。
先决定哪些要留下
Apple 的 Command Line Tools 文档区分了独立工具包和 Xcode 内的工具,后续工作还需要命令行构建时,可以保留独立工具包,但它不提供所有 Xcode 命令。
| 项目 | 删除前确认什么 | 怎么恢复 |
|---|---|---|
| Xcode.app | 留下仍需使用的其他 Xcode 版本 | 从废纸篓放回,或重装兼容版本 |
| 独立 Command Line Tools | 后续命令行构建是否需要它 | 重新安装兼容工具包 |
| 模拟器设备和运行时 | 留下测试数据和需要覆盖的系统版本 | 重新下载运行时,已擦除的设备状态需要备份 |
| DerivedData 和缓存 | 源码和依赖是否仍可获得 | 重新构建和索引 |
| 归档和签名资料 | 留下已分发构建和需要的签名材料 | 从核验过的备份恢复,重新构建不能代替 |
如果只是想减少占用,先看 Xcode 存储清理指南,里面讲的是保留编辑器、按项处理缓存。
留下归档和签名资料
移除 Xcode 前,先在 Organizer 查看归档,把需要的构建复制到独立存储,Apple 的归档指南说明了归档用于分发,常见的 Archives 位置也是 Mole 明确排除在缓存清理之外的目录。
~/Library/Developer/Xcode/Archives
已经分发的构建,要连同匹配的 dSYM 一起保留,Apple 的调试信息说明要求二进制和 dSYM 的构建 UUID 匹配,所以重新编译源码不能替代那份符号文件。
还在使用的描述文件和签名身份也要留下,Apple 的签名资料备份说明指出,重新下载描述文件无法恢复丢失的签名私钥,不要把应用卸载变成钥匙串和签名资料的大清理。
先移除 Xcode 应用
完成构建和测试,退出 Xcode 和 Simulator,再找到这次确实要移除的 Xcode,按 Apple 的访达移除步骤把它移到废纸篓。如果装了多个版本,先核对实际安装位置,不要把名字相近的应用一起删掉。
确认保留的工具能正常用之前,让应用留在废纸篓里,只有它还在那里时才能放回,之后重装需要兼容版本和可用下载,永久删除前空间还没释放,不要把可用空间没变化误判成移动失败。
单独决定 Command Line Tools 的去留
Apple 的开发目录选择说明给出了这个只读检查。
xcode-select --print-path
返回 Xcode 内的开发目录,表示当前命令行工具来自那个应用,返回 /Library/Developer/CommandLineTools 表示选中了独立工具包,报错则表示没有活动开发目录,不是项目源码消失了。
如果需要独立工具包但还没安装,用 xcode-select --install 请求安装并完成安装,只有确认目录存在后,再选择它。
sudo xcode-select --switch /Library/Developer/CommandLineTools
xcode-select --print-path
第二条命令应该返回独立工具包路径,以后想切回去,按 Apple 的同一套步骤选择实际保留的 Xcode,切换路径不会替你安装缺失工具。
如果后续工作都不需要独立工具包,Apple 在安装文档里给出了移除 /Library/Developer/CommandLineTools 的步骤,确认不再需要才按那个精确路径处理,这是直接删除,不经过废纸篓,不要连更大的 /Library/Developer 一起删。
模拟器和缓存另行处理
移除最后一个 Xcode 前,先按 Apple 的组件管理说明检查不用的运行时,当前文档把这个设置面板称为 Components,运行时和使用它的虚拟设备要分别判断,具体操作见 iOS 模拟器清理指南。
DerivedData 和缓存按前面的 Xcode 存储指南处理,只针对确认过的构建输出,重新生成需要源码、依赖和相应工具链,Archives 和描述文件不在这次清理里,也不要为了卸载收尾就删除整棵 Developer 目录。
核对 Homebrew 和剩余构建
Homebrew 的安装要求列出,从源码构建 formula 需要 Command Line Tools 或 Xcode,所以即使不再打开 Xcode,独立工具包也可能仍有用,但需要 xcodebuild 这类 Xcode 专属工具的流程,不能靠它替代完整 Xcode。
先核对选中的开发目录,再试一个以后还要用的代表性构建,失败就读报错,分清缺工具还是缺项目依赖,不急着重装或继续删除,通过之前保留可以恢复的应用。
Mole 会做什么
Mole Mac 的软件允许移除 Xcode,并为它显示数据确认提示,这是提醒你检查勾选的数据,不代表关联目录都能丢弃。
在清理里,Mole 的开发缓存目录表排除了 Xcode Archives,内置白名单也包含 Archives 路径,这个保护不等于归档和签名资料的备份,卸载前仍要单独保存。
常见问题
卸载 Xcode 后还能用 Homebrew 吗?
可以,Homebrew 构建需要工具时,留下或安装兼容的 Command Line Tools,再检查开发目录和一个自己实际会用的构建。
删除 Xcode.app 会删掉全部模拟器吗?
不要这样假设,移除最后一个 Xcode 前,按组件和模拟器指南分别核对下载的运行时与设备数据。
留着源码就能删 Archives 吗?
已经分发的构建要保留归档和匹配符号,重新构建不保证 UUID 相同,重装 Xcode 也不能恢复旧签名私钥。