Xcode 27 下 HBuilderX 运行 iOS 模拟器报错 `Unable to find application named 'Simulator'` 的解决办法
出了什么问题
升级 Xcode 27 后,在 HBuilderX 里运行到 iOS 模拟器基座,直接报错:
Command failed: open -a Simulator
Unable to find application named 'Simulator'
Xcode 26 及以前一直正常,这是 Xcode 27 才出现的问题。
什么原因
Xcode 27 起不再附带 Simulator.app,模拟器界面并入了新的 DeviceHub.app:
ls /Applications/Xcode.app/Contents/Applications/
# DeviceHub.app 在这里,Simulator.app 没了
模拟器本体没坏(simctl、运行时、设备都正常),但 HBuilderX 启动模拟器时写死执行 open -a Simulator,系统里已经没有叫这个名字的应用,于是启动失败。这是 DCloud 论坛的已知问题,官方暂未适配。
怎么解决
在 /Applications 下创建一个名为 Simulator.app 的转发壳,把 open -a Simulator 转给 DeviceHub:
mkdir -p "/Applications/Simulator.app/Contents/MacOS"
cat > "/Applications/Simulator.app/Contents/Info.plist" <<'EOF'
CFBundleName
Simulator
CFBundleDisplayName
Simulator
CFBundleIdentifier
com.local.simulator-launcher
CFBundleExecutable
SimulatorLauncher
CFBundlePackageType
APPL
CFBundleShortVersionString
1.0
CFBundleVersion
1.0
LSUIElement
LSMinimumSystemVersion
13.0
EOF
cat > "/Applications/Simulator.app/Contents/MacOS/SimulatorLauncher" <<'EOF'
#!/bin/bash
# Xcode 27 起不再附带 Simulator.app,模拟器界面由 DeviceHub 承担,
# 把 open -a Simulator 转发给 DeviceHub。
exec /usr/bin/open -a "/Applications/Xcode.app/Contents/Applications/DeviceHub.app" "$@"
EOF
chmod +x "/Applications/Simulator.app/Contents/MacOS/SimulatorLauncher"
# 注册到 LaunchServices
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister \
-f /Applications/Simulator.app
验证一下:
open -a Simulator # DeviceHub 正常打开即可
然后重启 HBuilderX,重新运行到 iOS 模拟器即可恢复和以前一样的流程。如果 DeviceHub 里没自动弹出模拟器画面,在它左侧设备列表点一下对应的 iPhone。
想撤销的话,删掉 /Applications/Simulator.app 就行;等 HBuilderX 官方适配 Xcode 27 后也可以删。
评论
?
参与讨论