在 CI 上针对不同版本的 iOS 模拟器/SDK 运行测试是很常见的情况。但是,Xcode 默认仅安装最新的 iOS 模拟器。
所以我需要在 CI 环境中从命令行安装其他缺少的 iOS 模拟器。但我找不到从命令行安装这些模拟器的方法。
可以使用 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 退出;失败时,大多数会以非零数字退出。
就我个人而言,我有一篇关于如何从终端使用模拟器的文章。
仅供参考
所有模拟器都装有 Xcode 应用程序。您无需安装模拟器,只需安装特定的 Xcode 版本即可。 Xcode7.0有iOS9模拟器 Xcode6.4有iOS8.x模拟器
在 CI 测试中,如果您想测试特定模拟器的应用程序,只需在执行 xcodebuild 命令之前选择 xcode 版本
xcode-select -switch <path to your xcode app>
这将设置您的默认 xcode 来运行 xcodebuild 然后使用各自的模拟器运行 xcodebuild。
xcodebuild -configuration ${BUILD_TYPE} -target ${TARGET_NAME} -arch ${CPU_ARCHITECTURE} -sdk ${SIMULATOR_OR_IOS_SDK}
在
SIMULATOR_OR_IOS_SDK
的位置给出您的模拟器值。
您可以通过运行找到模拟器值
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
这样您就可以在任何特定设备/模拟器/操作系统上构建您的项目。
希望这有帮助:)
对于 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
我不知道这些网址从何而来,但我发现了一些线索
.dmg
文件xcrun simctl runtime add <path to DMG file>