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 System content for IBCocoaTouchFramework-ElevenAndLater scaleFactor=2x, renderMode.identifier=(null): Failed to find or create execution context for description ' System content for IBCocoaTouchFramework-ElevenAndLater 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包顺利打出。

你可能感兴趣的:(Jenkins自动打包的时候,新版Xcode出现的报错以及解决办法)