You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fastlane中运行单元测试的Rosetta模拟器名称及Lane编写咨询

解决Fastlane中Rosetta适配模拟器的测试Lane问题

直接使用iPhone 14 (Rosetta)作为设备名称无效,核心原因是服务器上的模拟器名称格式并非如此,且需明确x86_64架构的模拟器(这类模拟器在Apple Silicon服务器上依赖Rosetta运行)。

1. 获取服务器上可用的Rosetta适配模拟器名称

在终端执行以下命令,筛选出所有x86_64架构的iPhone模拟器:

xcrun simctl list devices available | grep -E 'iPhone.*x86_64'

输出示例类似:

iPhone 14 (16.4) (ABC123DEF456) — x86_64

这里的iPhone 14 (16.4)或括号内的设备UUID(ABC123DEF456)均可作为有效设备标识(UUID更稳定,避免名称变动)。

2. 编写Fastlane测试Lane

以下是可直接在服务器运行的测试Lane示例,包含Rosetta校验、模拟器管理和测试执行:

lane :test_with_rosetta do
  # Apple Silicon服务器强制安装Rosetta(已安装则跳过)
  sh "softwareupdate --install-rosetta --agree-to-license || true"

  # 替换为你获取到的模拟器名称/UUID
  simulator_id = "iPhone 14 (16.4)"

  # 提前启动模拟器,避免冷启动导致测试超时
  sh "xcrun simctl boot '#{simulator_id}'"

  # 运行Xcode测试,强制指定x86_64架构确保Rosetta生效
  run_tests(
    scheme: "YourAppScheme",
    device: simulator_id,
    xcargs: "-arch x86_64"
  )

  # 测试完成后关闭模拟器,释放资源
  sh "xcrun simctl shutdown '#{simulator_id}'"
end

3. 补充:服务器无对应x86_64模拟器时的创建方法

若上述命令未找到合适的模拟器,可手动创建:

# 先查看服务器可用的iOS运行时版本
xcrun simctl list runtimes

# 创建x86_64架构的iPhone模拟器(替换为实际可用的runtime版本)
xcrun simctl create "iPhone 14 Rosetta" "iPhone 14" "iOS 16.4" --arch x86_64

创建完成后,重新执行第一步的命令获取设备标识,更新Lane中的simulator_id即可。

内容的提问来源于stack exchange,提问作者Navdeep Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:12:20