Detox测试时模拟器启动失败怎么办?

瑞玲~ 阅读 47

我用Detox写了个简单的端到端测试,但每次运行都卡在启动模拟器这步,报错说找不到设备。明明Xcode里模拟器能正常打开,也按文档配了deviceNameos,就是跑不起来。

我的配置是这样的:

{
  "configurations": {
    "ios.sim.debug": {
      "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/myapp.app",
      "build": "xcodebuild -workspace ios/myapp.xcworkspace -scheme myapp -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
      "type": "ios.simulator",
      "device": {
        "type": "iPhone 15"
      }
    }
  }
}

是不是设备名称写错了?还是build路径有问题?折腾半天没搞定,有谁遇到过类似情况吗?

我来解答 赞 8 收藏
二维码
手机扫码查看
1 条解答
Mr.翠翠
Mr.翠翠 Lv1
设备名称写错了。"iPhone 15" 这个值在 Detox 里不能直接用,你得用模拟器的 UUID 或者完整的设备名称。

问题在于 Xcode 模拟器的设备名称可能带版本号,比如 "iPhone 15 (17.0)" 这种格式,而且每次运行 ID 还会变。

解决方法:

第一步,先查一下你本地到底有哪些模拟器可用。在终端跑:

xcrun simctl list devices available | grep -i "iphone"


会列出类似这样的结果:

iPhone 15 (ABC123-DEF456-...) (Booted)
iPhone 15 Pro (GHI789-JKL012-...) (Shutdown)


第二步,把查到的 ID 填到配置里:

{
"configurations": {
"ios.sim.debug": {
"binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/myapp.app",
"build": "xcodebuild -workspace ios/myapp.xcworkspace -scheme myapp -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
"type": "ios.simulator",
"device": {
"id": "ABC123-DEF456-..."
}
}
}
}


用 id 比用 name 靠谱,因为 name 可能会变。

另外提醒一嘴,如果你是 CI 环境跑,每次构建完模拟器 ID 可能会变,最好用 xcrun simctl list devices available 动态获取,或者在 CI 配置里先确保模拟器已经创建好且 ID 固定。
点赞
2026-03-11 16:01