针对 Xcode12 打包报错的解决方法

  • Creator 版本:2.2.2

  • 目标平台: iOS

  • 重现方式:打包发布 uildProductsPath/Release-iphoneos/libcocos2d iOS.a, building for iOS-armv7 but attempting to link with file built for iOS-arm64


Jare 补充:感谢反馈,15 楼已给出解决方案

看看你的libcocos2d有没有配置arm64的架构,添加就可以了

请问libcocos2d在哪配置arm64的架构?可以截个图看看吗?

我也是升级xcode12后Archive Release模式下会报错,
The linked library ‘libv8_monolith.a’ is missing one or more architectures required by this target: armv7.

@kenshi 我们也遇到这个问题了,可以给个操作说明么。今天要出包上线,急

今天要出包上线,可以给个操作说明吗,急!!! creator2.3.3,xcode升到12以后出的问题

同样XCode Archive的时候The linked library ‘libv8_monolith.a’ is missing one or more architectures required by this target: armv7,怎么解决

直接把 armv7 删掉

好的,我们试下

可以了,但是我们线上用户还有2%的设备需要armv7,armv7s这个就没办法支持了吗

这个在转到使用 v8 后就不支持了,v8 不支持 32 位设备。之前使用的是 JSC,所以能够支持 32 位,但是之前经过讨论觉得 32 位设备市场占有率太低就不支持了。否则引擎得同时维护 JSC 和 V8,带来的工作量增加不少。

和同事仔细分析了下,引擎本身是支持 armv7 的,但是因为 Xcode 升级导致了不兼容。具体原因是这样的:引擎在链接库依赖里加了 v8 的依赖,但是在 32 位设备上是不会去链接的,在之前的 Xcode 版本没有问题。但是新版本的 Xcode 可能改了规则,不以是否有链接来判断,只要是设置了依赖就会去查找对应架构的库是否存在。

所以我们打算在胖包 libv8_monolith.a 里打入一个假的 armv7 架构的 v8 库,骗过 Xcode 的流程,因为最后反正也不回去链接。这个方式不知道是否可行,还得试验。

对于不支持 armv7 架构的游戏直接按照上面的做法把 armv7 去掉就可以了。

谢谢引擎大神,继续蹲你们验证的方法

@maxyip @314490292 @337971370 @980538137

https://github.com/PatriceJiang/cocos2d-x-lite-external/blob/v2.4-add-armv7-placeholder-to-libv8/ios/libs/libv8_monolith.a 下载替换 external/ios/libs/libv8_monolith.a 试试

替换后可以出包了

1赞

2.3.4替换之后 调试都不过

archive报这个错

去掉armv7可以

解决没,2.3.3 替换后同样的问题

cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj The linked library ‘libluajit.a’ is missing one or more architectures required by this target: arm64.
这个报错怎么解决

2.3.3替换了还是会报错,和楼上说的一样,调试都会报错,只能armv7 才正常。