Apple 将 Xcode 组件分为“平台支持”“其他组件”和“其他已安装平台”三类;模拟器运行时属于可单独管理的组件。遇到 iOS 27 模拟器运行时下载失败,本周先确认问题停在下载、安装还是运行目标识别,再按对应阶段处理;不要先删除系统目录或重装 Xcode。(Apple 的 Xcode 组件管理文档)
适合正在等待 iOS 27 运行时、无法启动项目模拟器运行目标的独立开发者。
使用远程 Mac 或 CI 执行 Xcode 测试的小团队,也可以据此确认应该从哪台 Mac 收集证据。
刚升级 Xcode、项目却没有可用模拟器的开发者,可用下文区分运行时缺失与工具链选错。
SECTION 01 iOS 27 模拟器运行时下载失败:先分清故障阶段
| 故障阶段 | 常见现象 | 优先核验 | 下一步与停止条件 |
|---|---|---|---|
| 下载 | 任务未开始、中断或报错 | Components 中是否列出目标运行时;任务处于进行中、失败还是取消 | 先记录错误原文。任务仍在进行时不要并行重试;明确失败后再核对工具链 |
| 安装 | 下载看似结束,但安装没有完成 | Components 状态、下载包位置、活动开发者目录 | 先确认包与所选 Xcode 对应。目录不符时先处理工具链选择,不要默认重新下载 |
| 识别 | 安装后运行目标中仍没有预期设备 | 运行时清单、可用设备清单、项目 Scheme | 若运行时已列出,转查设备和 Scheme;不要把运行目标缺失直接判为项目编译失败 |
Apple 将模拟器运行时作为可管理的组件,并说明 Xcode 完成下载和安装前,项目不能针对相应平台运行或构建。因此,SDK 存在、运行时已安装、运行目标可选,是三个不同状态;确认其中一个,并不能替代另外两个。具体版本以当前 Xcode 中可见的组件,以及Apple 的 Xcode 系统要求页面为准,不能只凭 SDK 版本推断运行时必然可用。
按这个顺序操作:先记录版本与错误,再查下载和安装状态,最后检查运行时是否被当前工具链识别。阶段判断不清楚时,先不要清理目录、移除运行时或切换全局开发者目录。
SECTION 02 下载阶段:组件入口与命令行核验
在 Xcode 的 Settings 中打开 Components,确认目标 iOS 运行时是否列在可下载组件里,并查看任务状态。若组件没有出现,先核对当前 Xcode 支持的版本;若任务还在进行,不要同时启动另一份下载。按钮曾经显示进度,并不代表下载和安装都已完成。
命令行下载的运行时版本与归属核验
Apple 支持使用 xcodebuild -downloadPlatform 下载模拟器运行时,并可通过 -buildVersion 指定版本。你可以先确认活动开发者目录和 Xcode 版本,再按当前工具链支持范围填写版本号:
xcode-select --print-path
xcodebuild -version
xcodebuild -downloadPlatform iOS -exportPath ~/Downloads -buildVersion <当前支持的版本>
占位符要替换成当前 Xcode 支持的版本,不要原样执行。还要区分“下载到导出目录”和“安装进所选 Xcode”:Apple 文档说明,下载后可使用 xcodebuild -importPlatform 导入运行时包。具体参数、架构选项和安装步骤应以Apple 的组件下载与安装说明为准。
下载任务报错时,先留存错误原文、发生时间、导出目录和活动开发者目录。如果命令提示版本不可用,停止重复尝试,回到当前 Xcode 的组件列表与系统要求核对;若包已下载但导入失败,则转入安装阶段检查,不要把失败一概归因于网络。
SECTION 03 安装阶段:包状态与活动开发者目录
下载结束不代表安装成功。保留安装错误及下载包的位置,再检查终端实际调用的是哪一套 Xcode:
xcode-select --print-path
这条命令返回当前活动开发者目录。若 Mac 装有多个 Xcode,终端选中的版本可能不是你刚才在图形界面操作的版本。先在 Xcode 的 Locations 设置核对命令行工具选择;需要切换时,记录原路径,并确认管理员权限与影响范围后再使用 xcode-select --switch。如果只希望某条命令临时使用另一套开发者目录,可考虑在命令前设置 DEVELOPER_DIR,避免直接改变默认选择。两种方式的作用范围见Apple 的命令行工具设置文档。
若你使用 Apple 文档支持的导入方式安装下载包,确认导入命令指向预期的包,并由预期的 Xcode 执行。只有在开发者目录正确、包也对应当前工具链但导入仍失败时,才继续收集安装日志或交由环境维护者处理。
停止条件:目标版本不在当前 Xcode 的可用列表中,命令行报告版本不可用,或导入错误指向工具链不匹配时,先停止重试。不要把删除 CoreSimulator 或系统资产目录当作常规修复手段;这可能扩大影响范围,也可能清掉后续排查所需的信息。若确需清理,先确认目标目录、受影响的运行时和回退方式。
SECTION 04 运行目标识别:运行时与设备分开查
运行时已安装但没有可用设备
先检查项目选中的 Scheme 是否面向 iOS,再看 Xcode 的运行目标列表。Xcode 会按 Scheme 对应的平台填充可选运行目标;如果 Scheme 不是 iOS,即使安装了 iOS 运行时,也不一定会显示预期设备。Apple 在模拟器与实体设备运行指南中说明,运行目标列表受所选 Scheme 影响。
接着在同一套开发者目录下检查运行时与设备:
xcrun simctl list runtimes
xcrun simctl list devices available
第一条查看运行时是否被识别,第二条查看当前可用的模拟设备;这两份清单不能互相替代。simctl 是 Xcode 提供的 Simulator 管理命令,可用 xcrun simctl help 查看当前工具链支持的命令;相关工具见Apple 的命令行工具参考。
如果运行时在清单里,但没有目标设备型号,转而检查 Xcode 的 Devices and Simulators 管理界面。运行时和模拟设备是不同对象;确认缺少的是设备后,再按Apple 的模拟器管理说明检查可用设备或添加方式,不要再次下载已经识别的运行时。
GUI 与终端结果不一致时,先确认两者使用同一套 Xcode,再用项目 Scheme 检查命令行运行目标:
xcodebuild -project <项目文件> -scheme <Scheme 名称> -showdestinations
把占位符换成项目实际名称。若运行时已出现、但没有预期设备,继续排查设备和 Scheme;如果运行目标存在而构建失败,再根据构建日志处理编译问题。Apple 关于构建与运行流程的说明介绍了以目的地清单核对目标的做法。
SECTION 05 远程 Mac 与 CI:检查实际执行环境
远端工具链与本机不一致
检查命令必须在真正执行构建的 Mac 上运行,而不是只在发起远程连接的电脑上检查。SSH、VNC 或网页控制台只是访问方式,不会让本机的 Xcode、SDK 或 Simulator Runtime 自动出现在远端主机。
在远程 Mac 或 CI Runner 上分别收集:
xcode-select --print-path的输出,确认活动开发者目录。xcodebuild -version的输出,确认构建任务实际使用的 Xcode。xcrun simctl list runtimes与xcrun simctl list devices available的结果,区分运行时识别和设备可用性。- 失败任务的完整命令、Scheme、错误原文及执行端日志。
CI 任务可能显式指定不同的 Xcode 路径;此时还要核对脚本中的 DEVELOPER_DIR 等环境设置,不能只看系统默认目录。若你没有远端主机的管理员权限,运行时下载、导入或系统组件安装应由环境维护者处理。把上述证据交给维护者,比自行删除远端目录更容易复现和定位问题。
SECTION 06 恢复验收:按里程碑完成验证
- [ ] 环境记录:保存 Xcode 版本、构建信息和
xcode-select --print-path输出。 - [ ] 下载完成:在 Components 确认目标运行时存在,下载及安装任务已结束;若失败,保存原始错误。
- [ ] 运行时识别:用
xcrun simctl list runtimes确认目标运行时出现在实际执行端。 - [ ] 设备可用:用
xcrun simctl list devices available确认有可用设备;没有时转查设备管理,而不是重下运行时。 - [ ] 目标匹配:确认项目 Scheme 面向 iOS,Xcode 运行目标列表与命令行目的地清单指向预期设备。
- [ ] 项目验收:用实际 Scheme 完成构建并启动应用;构建失败时再依日志转入代码或项目配置排查。
模拟器验收不能替代实体设备测试。Apple 指出,模拟器不能完整复现实体设备的性能和部分硬件特性;涉及真实硬件能力的功能,应在实体设备上验证。
若问题只在远程构建时出现,先让维护者核对执行端的 Xcode 与运行时清单。如果你目前依赖个人 Mac 持续在线、需要自己处理组件维护,或 CI Runner 的工具链无法由你控制,可以评估独立的远程 Mac 测试环境;但下单前要确认目标 Xcode 和运行时确实能在该环境安装并识别。VPSNIX 的方案页面可用于了解租赁选择,具体工具链可用性应先通过帮助中心核实。若你需要长期稳定的重负载环境、必须使用本地物理接口,或已有可维护的 Mac,自购或继续使用现有设备可能更合适。