Xcode12.4软链Developer至外置盘,新建模拟器报unknown runtime错误
故障根因
所有异常的触发源头是为/Library/Developer配置的指向外置硬盘的软链。CoreSimulatorService是系统级LaunchDaemon,启动优先级远高于外置硬盘的挂载流程,且对路径合法性、文件权限有严格的白名单校验规则,跨盘软链的配置会直接导致服务无法解析真实路径、读取运行时资源,最终出现服务连接中断、运行时列表为空、新建模拟器报unknown runtime的问题。
修复操作步骤(按优先级执行)
- 移除系统Developer目录的错误软链
- 执行命令:
sudo rm /Library/Developer - 该操作仅移除软链映射,不会删除外置硬盘上存储的原有文件
- 将外置盘上对应路径下的所有模拟器运行时文件(即原本通过软链访问的
CoreSimulator/Profiles/Runtimes目录内容),复制回本地内置盘的/Library/Developer/CoreSimulator/Profiles/Runtimes路径下
- 执行命令:
- 重置CoreSimulator后台服务与异常缓存
- 依次执行命令:
sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService rm -rf ~/Library/Caches/com.apple.CoreSimulator - 执行完成后等待30秒,让系统自动重新拉起CoreSimulator服务进程
- 依次执行命令:
- 校正Xcode开发环境绑定
- 执行命令检查当前选中的Xcode路径:
xcode-select -p - 确认输出为
/Applications/Xcode.app/Contents/Developer,如果路径不匹配,执行命令校正:sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
- 执行命令检查当前选中的Xcode路径:
- 验证运行时识别状态
- 执行命令检查系统对模拟器运行时的识别结果:
xcrun simctl list runtimes - 正常状态下会列出之前下载完成的对应版本模拟器运行时,Xcode新建模拟器窗口的操作系统版本下拉框也会同步加载可选项
- 执行命令检查系统对模拟器运行时的识别结果:
- 正确配置外置硬盘的存储路径,规避服务校验限制
- 禁止对/Library/Developer下的CoreSimulator相关目录(包含Profiles/Runtimes、DeviceNodes等)创建指向外置盘的软链,这类路径必须保留在系统默认的内置盘位置,否则故障会复现
- 仅可将DerivedData、Archives这类项目级存储路径通过Xcode设置的Locations标签页,手动指向外置盘的目标目录,不要通过系统级软链修改
- 如需迁移模拟器占用空间,需通过
xcrun simctl move命令将现有设备节点迁移到外置盘,禁止直接软链整个CoreSimulator目录
- 修复Developer目录的系统权限
- 执行命令重置目录权限为系统默认值:
sudo chown -R root:admin /Library/Developer sudo chmod -R 755 /Library/Developer
- 执行命令重置目录权限为系统默认值:
最终验证
完成所有操作后执行命令:
sudo xcrun simctl list
若不再出现CoreSimulatorService连接中断的提示,且能正常列出已安装的运行时、设备列表,即代表故障修复完成,可正常创建、使用模拟器。
内容的提问来源于stack exchange,提问作者3960278
相关产品推荐
相关产品推荐

