在Jenkins上通过Xcode8为iOS10构建创建问题

时间:2016-09-28 12:29:06

标签: jenkins ios10 xcode8

**内部错误:未捕获的异常**

未捕获的异常:加载的com.apple.CoreSimulator.CoreSimulatorService作业与我们的期望不符:

堆栈:   0 0x00007fff95278aca __exceptionPreprocess(在CoreFoundation中)   1 0x00007fff95c8273c objc_exception_throw(在libobjc.A.dylib中)   2 0x00007fff952788ba + [NSException raise:format:arguments:](在CoreFoundation中)   3 0x00007fff924d288c - [NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:](在Foundation中)

2 个答案:

答案 0 :(得分:2)

此问题表明加载的CoreSimulatorService作业与预期不符。在启动使用模拟器(Xcode,Simulator,simctl,xcodebuild,Instruments等)的任何进程时,系统首先检查加载的CoreSimulatorService是否适用于该版本的Xcode。如果不是,它会卸载作业并加载正确的作业。执行此操作后,它会重新验证连接,如果连接仍不符合预期,则会发出此错误。

当同一个用户帐户同时使用多个版本的Xcode 时,通常会发生这种情况。使用一个,完成,使用另一个,完成,使用另一个等等是完全没问题的。不能同时运行两个不同的副本。

答案 1 :(得分:1)

此错误通常是在com.apple.CoreSimulator.CoreSimulatorService运行时更新或切换Xcode版本引起的。 Xcode(包括xcodebuild)在构建iOS / tvOS / watchOS时使用模拟器来处理XIB / Storyboard文件,所以即使你没有启动Simulator.app,只需运行一个构建就可以启动CoreSimulator。

此检查确保launchd启动的XPC服务与库匹配。在你的情况下它失败了,表明launchd启动了旧版本的CoreSimulator。

如果CI系统重新使用安装了多个Xcode版本的实例,则需要确保用户会话完全注销,并且在开始下一次构建之前没有其他XPC服务实例正在运行。

如果您尝试在同一版本中切换Xcode版本,则需要在sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService 2> /dev/null后向xcode-select插入脚本。确保Xcode,Simulator.app和Console.app全部关闭,或者他们尝试建立XPC连接只会让launchd立即重启作业。