如何从命令行安装 iOS 模拟器

How to install iOS simulators from command line

运行 在 CI 上针对 iOS simulators/SDKs 的不同版本进行测试是常见的情况。但是,Xcode 默认只安装最新的 iOS 模拟器。

所以我需要在 CI 环境中从命令行安装其他缺少的 iOS 模拟器。但是我找不到从命令行安装这些模拟器的方法。

仅供参考

所有模拟器都装有 Xcode 应用程序。您可以安装特定的 Xcode 版本,而不是安装模拟器。 Xcode7.0 有 iOS9 个模拟器 Xcode6.4 有 iOS8.x 个模拟器

在你的 CI 测试中,如果你想针对特定的模拟器测试你的应用程序,只需 select xcode 版本,然后再执行 xcodebuild 命令

xcode-select -switch <path to your xcode app>

这会将您的默认 xcode 设置为 运行 xcodebuild 然后 运行 xcode 使用您各自的模拟器构建。

xcodebuild -configuration ${BUILD_TYPE} -target ${TARGET_NAME} -arch ${CPU_ARCHITECTURE} -sdk ${SIMULATOR_OR_IOS_SDK} 

代替 SIMULATOR_OR_IOS_SDK 给出你的模拟器值。

你可以通过运行ning

找到模拟器值
xcodebuild -showsdks

这会像

OS X SDKs:
    OS X 10.11                      -sdk macosx10.11

iOS SDKs:
    iOS 9.1                         -sdk iphoneos9.1

iOS Simulator SDKs:
    Simulator - iOS 9.1             -sdk iphonesimulator9.1

tvOS SDKs:
    tvOS 9.0                        -sdk appletvos9.0

tvOS Simulator SDKs:
    Simulator - tvOS 9.0            -sdk appletvsimulator9.0

watchOS SDKs:
    watchOS 2.0                     -sdk watchos2.0

watchOS Simulator SDKs:
    Simulator - watchOS 2.0         -sdk watchsimulator2.0

这样您就可以在任何特定的 device/simulator/os.

上构建您的项目

希望这对您有所帮助:)

对于 iOS 8.1 模拟器: http://devimages.apple.com/downloads/xcode/simulators/com.apple.pkg.iPhoneSimulatorSDK8_1-8.1.1.1434581536.dmg

对于iOS 8.2模拟器: http://devimages.apple.com/downloads/xcode/simulators/com.apple.pkg.iPhoneSimulatorSDK8_2-8.2.1.1434581536.dmg

对于iOS 8.3模拟器: http://devimages.apple.com/downloads/xcode/simulators/com.apple.pkg.iPhoneSimulatorSDK8_3-8.3.1.1434581536.dmg

对于 iOS 8.4 模拟器: http://devimages.apple.com/downloads/xcode/simulators/com.apple.pkg.iPhoneSimulatorSDK8_4-8.4.1.1435785476.dmg

我不知道这些网址是从哪里来的,但我发现了一些线索

可以用xcode-install,用下面的命令

gem install xcode-install
xcversion simulators --install='iOS 9.3'
xcrun simctl create <name> <device type> <runtime>

例如:

xcrun simctl create "ry" "iPhone 11 Pro Max" iOS13.3  

xcrun simctl 是控制 iOS 模拟器的命令实用程序,就像 Android 的 adb 一样。您还可以 运行 xcrun simctl help,那里有很多有用的子命令。成功时,大多数这些命令以 0 退出;失败时,大多数以非零数字退出。

就个人而言,我有一个关于如何从终端使用模拟器的article