如何确保构建使用的是 v14.x iOS/tvOS 模拟器?

问题描述

我们环境中的某些构建失败,因为构建使用的是 13.X iOS/tvOS 模拟器,并且出于某种原因会导致问题。我对我们的 Fastfile 进行了更改,以便构建使用 14.2 模拟器,现在构建成功了。

这是我对快速文件所做的更改。

首先,我声明了一个字典:

XCODE_DESTINATION = {
  iphoneos: "generic/platform=iOS",iphonesimulator: "platform=iOS Simulator,OS=14.2,name=iPhone 11 Pro Max",appletvos: "generic/platform=tvOS",appletvsimulator: "platform=tvOS Simulator,name=Apple TV 4K"
}

然后,在 iOS 和 tvOS 的 run_tests 通道中,我引用了 iphonesimulator 和 appletvsimulator:

    run_tests(
      destination: XCODE_DESTINATION[:iphonesimulator],workspace: WORKSPACE_NAME,scheme: options[:scheme_tests]
    )
    run_tests(
      destination: XCODE_DESTINATION[:appletvsimulator],scheme: options[:scheme_tests]
    )

尽管此解决方解决了问题,但我真的不希望 XCODE_DESTINATION dict 必须专门引用操作系统版本和特定设备。

有没有一种方法可以配置这个 Fastfile,使其仅在 XCode 中存在 14.X 模拟器时才运行测试,而无需在 dict 中明确指出?

谢谢!

解决方法

目前fastlane不支持这个,所以请随意创建一个问题-> https://github.com/fastlane/fastlane/issues

但您可以在 run_tests 中指定模拟器和版本:

run_tests(
      devices: ['iPhone 11 Pro Max (14.2)'],workspace: WORKSPACE_NAME,scheme: options[:scheme_tests],ensure_devices_found: true
    )

此外,您可以将 ensure_devices_found 设置为 true,因此如果未找到指定的模拟器,测试将失败。