Jenkins自动打包的时候,新版Xcode出现的报错以及解决办
一、现在工作流中使用Jenkins平台配合Shell脚本完成游戏项目自动打包,在Xcode自动编译的时候偶尔会报如下错误
/Unity-iPhone/Images.xcassets: error: Failed to find newest available Simulator runtime
这种情况终端执行如下代码即可:
sudo xcrun simctl shutdown all && sudo xcrun simctl erase all
二、由于更新新版Xcode 12.2,Jenkins在自动打包过程中,Xcode编译生成ipa时会报如下错误:
BPlatformTool: *** Failed to launch tool with description <IBCocoaTouchPlatformToolDescription: 0x7faa8daf1730> System content for IBCocoaTouchFramework-ElevenAndLater <IBScaleFactorDeviceTypeDescription: 0x7faa88a21180> scaleFactor=2x, renderMode.identifier=(null): Failed to find or create execution context for description '<IBCocoaTouchPlatformToolDescription: 0x7faa8daf1730> System content for IBCocoaTouchFramework-ElevenAndLater <IBScaleFactorDeviceTypeDescription: 0x7faa88a21180> scaleFactor=2x, renderMode.identifier=(null)'.
我这边出现此报错是因为老版的Unity导出的Xcode工程中LaunchScreen-iPhone.storyboard和新版本Xcode不兼容,所以出现模拟器进程运行不了。
1>不是配置自动打包的项目
可以直接终端执行 “killall -9 com.apple.CoreSimulator.CoreSimulatorService”或者重新创建一个新的LaunchScreen-iPhone.storyboard并做适配都可以解决此问题
2>配置自动打包的项目
对于该问题为什么我会出一个讲解是因为看了不少文章,有些建议直接使用如下指令:
sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService
执行超级用户权限,这种方式我再shell运行的过程中需要输入用户密码,这是可以在前面加上如下代码:
echo 'xxx' | sudo -S ls -a #xxx代表电脑的开机密码
sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService
将此代码放到shell自动打包脚本中TEST阶段没什么问题,但是配置完毕Jenkins打包的时候就会莫名的卡死:
后来经过测试发现我杀死CoreSimulatorService,是不需要超级用户权限,所以再进行自动打包的时候,需要将CoreSimulatorService指令放在Unity导出Xcode工程后,紧接着执行如下指令即可:
killall -9 com.apple.CoreSimulator.CoreSimulatorService
shell脚本设置完事,再Jenkins打包,ipa包顺利打出。