Xcode 27 下 HBuilderX 运行 iOS 模拟器报错 `Unable to find application named 'Simulator'` 的解决办法

💡 原文中文,约2200字,阅读约需6分钟。
📝

内容提要

Xcode 27 不再附带 Simulator.app,模拟器界面并入 DeviceHub.app,导致 HBuilderX 因写死 `open -a Simulator` 而无法启动 iOS 模拟器。解决办法:在 /Applications 下创建名为 Simulator.app 的转发壳,将启动请求转给 DeviceHub,并注册到 LaunchServices,重启 HBuilderX 即可恢复。撤销时删除该壳即可。

🔎

延伸解读

问题根源:Xcode 27 移除了 Simulator.app

Xcode 27 不再附带 Simulator.app,模拟器界面被整合进 DeviceHub.app。但 HBuilderX 启动模拟器时写死了 `open -a Simulator` 命令,系统找不到名为 Simulator 的应用,因此报错。模拟器本身(simctl、运行时、设备)并未损坏,只是启动方式变了。

临时解决方案:创建转发壳

在 /Applications 下创建一个名为 Simulator.app 的转发壳,其可执行文件将 `open -a Simulator` 转发给 DeviceHub.app。需手动创建 Info.plist 和启动脚本,并注册到 LaunchServices。完成后重启 HBuilderX 即可恢复原有流程。

操作注意与撤销方法

创建壳后可用 `open -a Simulator` 验证是否打开 DeviceHub。若 DeviceHub 未自动显示模拟器画面,需在左侧设备列表点击对应 iPhone。撤销时直接删除 /Applications/Simulator.app 即可,待 HBuilderX 官方适配 Xcode 27 后也可删除。

Q&A

Xcode 27 下 HBuilderX 运行 iOS 模拟器报错 Unable to find application named 'Simulator' 是什么原因?

Xcode 27 起不再附带 Simulator.app,模拟器界面并入了 DeviceHub.app。HBuilderX 启动模拟器时写死执行 open -a Simulator,但系统里已没有名为 Simulator 的应用,因此启动失败。

如何解决 HBuilderX 在 Xcode 27 下无法启动 iOS 模拟器的问题?

在 /Applications 下创建一个名为 Simulator.app 的转发壳,将启动请求转给 DeviceHub,并注册到 LaunchServices,然后重启 HBuilderX 即可恢复。

创建 Simulator.app 转发壳的具体步骤是什么?

1. 创建目录:mkdir -p "/Applications/Simulator.app/Contents/MacOS";2. 创建 Info.plist 文件,内容包含 CFBundleName、CFBundleDisplayName、CFBundleIdentifier、CFBundleExecutable 等键值;3. 创建可执行脚本 SimulatorLauncher,内容为 exec /usr/bin/open -a "/Applications/Xcode.app/Contents/Applications/DeviceHub.app" "$@";4. 赋予执行权限:chmod +x "/Applications/Simulator.app/Contents/MacOS/SimulatorLauncher";5. 注册到 LaunchServices:/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /Applications/Simulator.app。

如何验证 Simulator.app 转发壳是否生效?

在终端执行 open -a Simulator,如果 DeviceHub 正常打开,则说明转发壳生效。

如果 DeviceHub 打开后没有自动显示模拟器画面怎么办?

在 DeviceHub 左侧设备列表中点击对应的 iPhone 即可显示模拟器画面。

如何撤销对 Simulator.app 转发壳的修改?

直接删除 /Applications/Simulator.app 即可。等 HBuilderX 官方适配 Xcode 27 后也可以删除。

🏷️

标签

➡️

继续阅读