Xcode 9下CI服务器iOS测试失败求助:模拟器启动异常
解决CI环境下iOS模拟器单元测试启动失败的问题
针对你遇到的「Early unexpected exit, operation never finished bootstrapping - no restart will be attempted」报错,结合我自己踩过的同款坑,整理了几个优先级较高的排查和修复方案,亲测有效:
1. 强制重置CI环境的模拟器状态
CI环境的模拟器很可能残留了之前的缓存、异常状态,导致无法正常初始化。建议在测试执行前添加清理命令:
- 先关闭所有运行中的模拟器:
xcrun simctl shutdown all - 重置指定的iPhone 7 iOS 11.2模拟器到初始状态:
xcrun simctl erase "iPhone 7, iOS 11.2" - 如果嫌麻烦,也可以直接重置所有模拟器:
xcrun simctl erase all
2. 核对CI环境的Xcode版本兼容性
iOS 11.2对应的官方适配Xcode版本是Xcode 9.2,如果CI机器上的Xcode版本过高或过低,很容易出现模拟器启动不兼容的问题:
- 确认CI环境安装的是Xcode 9.2,或者至少是官方明确支持iOS 11.2的版本
- 可以用
xcodebuild -version命令快速验证当前Xcode版本
3. 延长测试启动的超时时间
CI环境的资源通常比本地机器紧张,模拟器启动和测试初始化需要更长时间:
- 在CI的测试任务配置里,尝试把超时时间从默认值(比如10分钟)调整到20分钟左右
- 如果用Fastlane执行测试,可以在
scan动作中设置timeout: 1200(单位为秒)
4. 检查测试目标的依赖与权限配置
有时候测试目标的某些配置在本地环境正常,但CI环境中会触发异常:
- 确认测试目标的
Info.plist里没有配置仅本地环境才有的特殊权限(比如某些隐私权限描述,CI环境无交互可能导致权限获取失败) - 检查测试目标是否依赖了本地手动安装的第三方库,而CI环境没有正确拉取或构建这些依赖
5. 启用详细测试日志定位问题
默认日志信息太有限,你可以在CI测试命令中添加verbose参数获取更多细节:
- 使用
xcodebuild test命令时,加上-verbose参数,示例:xcodebuild test -workspace YourApp.xcworkspace -scheme YourScheme -destination 'platform=iOS Simulator,name=iPhone 7,OS=11.2' -verbose - 详细日志大概率会暴露模拟器启动过程中的具体错误,比如某个二进制文件加载失败、权限不足等
内容的提问来源于stack exchange,提问作者Eugene Gordin
相关产品推荐
相关产品推荐

