解决 Jenkins M1 Mac (arm64) 节点构建 iOS / macOS App 时 CompileStoryboard 卡住的问题

在M1Mac Jenkins节点上,构建iOS App时可能遇到CompileStoryboard卡住的问题,原因可能是使用的xcodebuild非原生arm64架构。解决方案包括在构建脚本中指定arch-arm64的xcodebuild或者安装支持arm64的JDK(如zulu)。确保Jenkins使用原生架构可以避免此类问题。

解决 Jenkins M1 Mac (arm64) 节点构建 iOS / macOS App 时 CompileStoryboard 卡住的问题

问题发生在 Jenkins 节点机器为 M1 Mac (Apple Silicon, arm64) 的情况下,构建 iOS App 可能会卡住,目前我遇到的都是卡在 CompileStoryboard 的地方,全网搜了一下也没找到类似的状况。

排查了一下估计有可能是因为调用的 xcodebuild 不是运行的原生 arm64 架构。虽然理论上运行 Rosetta 转译的 x86_64 应用也应该没有问题,但目前最大的可能性就是这个了(因为尝试直接在 M1 Mac mini 节点上面构建是正常的)

目前 Jenkins 在节点上使用的 openjdk 仍然是 x86_64 的,导致 Jenkins 在节点执行任务时的 shell 也是 x86_64 的。

如何判断 Jenkins 是否使用的是 x86_64 架构的 shell:直接在 Terminal 执行 sysctl sysctl.proc_translated 将返回 0 ,在 Rosetta 转译模式下执行会返回 1。

解决方案:

  • 方案一:
    在构建脚本中,调用 xcodebuild 的时候,加上 arch -arm64 前缀,强制使用原生 arm64 的 xcodebuild 来构建 App。

    xcodebuild
    (注意需要判断一下当前是否在 arm64 Mac 上运行,x86_64 Mac 执行此命令会报错,如果你使用的构建脚本是 shell 可以用 uname -m 获取当前架构)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值