~/Library/Developer 里一排 simulator runtime 和设备数据最扎眼,系统已经在抱怨磁盘空间。U 盘或移动硬盘空着大半,第一反应是「整包挪出去」。问题是:官方设置能改到哪一步,社区常用的整目录软链接又有哪些坑。
Apple 现在把额外模拟器 runtime 的说明放在组件管理文档里(旧链常叫 Installing additional simulator runtimes)。Locations 帮助页很多是 JS 壳,下面路径相关只写能核对到的部分,不编「官方一键迁到移动硬盘」。
官方能管的:少装、删掉不用的 runtime
Apple 开发者文档 Downloading and installing additional Xcode components(组件下载与安装)写明:可选组件自己管,只装用得到的,不用的可删以回收空间。入口是 Xcode → Settings → Components(边栏 Components)。
页上分几类:Platform Support、Other Components、Other Installed Platforms(不同设备和系统版本的 simulator runtime)。安装点 Get。卸下或关掉点组件旁信息按钮,再 Delete / Turn Off。历史版本 runtime 可在 Other Installed Platforms 里用 Add Platforms 筛选后 Download & Install。工程里若某平台还没有 runtime,运行目的地旁也会出现 Get。
命令行同一页给了 xcodebuild -downloadPlatform、-downloadAllPlatforms、-importPlatform 等,方便一台机器下好再分发。默认还会按架构选 variant,Apple silicon 上可少下 universal 包以省空间。先把不用的旧 iOS / watchOS runtime 删掉,往往比急着改目录有效。
Locations:能改的和文档没承诺的
不少人记得 Xcode → Settings → Locations 里能改 Derived Data、Archives 一类路径。Apple 的帮助页不少是 JS 壳,逐字标签不好核,实践里这些目录常能指到空间更宽的磁盘,用来缓解「编译产物把盘吃满」。它和「整份 CoreSimulator 一键搬到外置盘」不是同一件事。
当前打开的组件文档,讲的是安装与删除 runtime,没有写成「把模拟器数据根目录官方迁移到移动硬盘」的向导。若你本机 Settings 里确实能改某些位置,改完用小型 runtime 验证模拟器仍能启动,再决定要不要动更大的数据。别假设外置盘路径会自动被所有 Xcode 更新继承。
整目录软链到外盘:社区做法,风险要自己背
把 ~/Library/Developer/CoreSimulator(或其中 Devices / 缓存)挪到外盘再 ln -s 指回去,是论坛里常见的腾挪法。它不是上面那份官方组件文档里的步骤。用户报告过的麻烦包括:
- Xcode 或系统更新后软链被拆掉、目录被重建在内置盘,空间又炸回来。
- 外盘文件系统权限、所有权、是不是始终挂载,会导致模拟器无法 boot 或服务起不来。
- Time Machine 与外盘、符号链接的组合可能备份异常或重复拷贝,恢复时更乱。
- 外盘休眠、线材断开,正开着的模拟器直接挂。
若磁盘压力只是短期的,优先删未用 runtime、清 Derived Data、少装平行的旧系统镜像。只有在官方路径改完仍不够、且能接受更新后重做链接时,再考虑社区软链,并自己做可回滚备份。不写具体破解或绕过签名的操作。
想少占空间时可以先问自己的几句
- 现在装了几个用不到的旧系统 runtime?Components 里回收空间数字够不够喘口气。
- 吃空间的是 runtime 本体,还是某台模拟器里堆出来的 App 数据。
- 外盘是 APFS/Mac 常用格式且长期挂着,还是随插随拔的搬家盘。
- 团队有没有统一用
xcodebuild -downloadPlatform只拉需要的版本,避免每人本机囤一套全集。
有人只靠删未用 Components 就够喘口气。也有人非要把 CoreSimulator 指到雷电盘,才装得下多套老系统。你们是删 runtime 就能活,还是已经走到必须上外盘的程度?软链之后有没有在一次 Xcode 小版本更新后复检过路径还在不在?