Fastlane run_tests指定设备无效,默认使用iPhone SE模拟器问题求助
问题排查与解决方案
可能原因
- 设备名称匹配不精确:Xcode模拟器的完整名称通常包含iOS版本号,仅指定设备型号时,Fastlane可能因匹配逻辑问题选中错误设备(尤其当列表中存在同架构设备时)。
- Scheme配置覆盖:你的
TestsScheme可能在Xcode中默认绑定了iPhone SE (3rd generation)作为测试目标,导致Fastlane的设备配置被覆盖。 - 旧版本Fastlane存在bug:你使用的fastlane 2.210.1属于较旧版本,设备匹配逻辑存在已知问题。
具体解决步骤
1. 获取精确的模拟器信息
执行以下命令,列出所有可用模拟器的完整名称与唯一UDID:
xcrun simctl list devices
从输出中找到目标iPad mini (6th generation)的完整条目,示例格式如下:
iPad mini (6th generation) (XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Shutdown) iOS 16.4
2. 精准指定设备(二选一)
- 方式一:使用UDID(最可靠)
用设备的唯一UDID替换名称,避免名称匹配歧义:run_tests( scheme: "TestsScheme", device: "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", # 替换为实际UDID output_directory: "./report_unit_tests", skip_slack: true, ) - 方式二:使用完整设备名称
复制xcrun simctl输出中的完整名称(包含iOS版本),更新配置:run_tests( scheme: "TestsScheme", device: "iPad mini (6th generation) iOS 16.4", # 替换为实际完整名称 output_directory: "./report_unit_tests", skip_slack: true, )
3. 检查并修正Scheme配置
打开Xcode编辑TestsScheme:
- 切换到Test阶段,查看Destination设置。
- 若当前固定为
iPhone SE (3rd generation),改为Any iPad或直接选择目标模拟器,确保Fastlane的配置能生效。
4. 升级Fastlane版本
执行命令升级到最新稳定版,修复旧版本的设备匹配bug:
bundle update fastlane
内容的提问来源于stack exchange,提问作者Wouter
相关产品推荐
相关产品推荐

