升级xcode12后打包报错如下:
The linked library 'libv8_monolith.a' is missing one or more architectures required by this target: armv7.
The linked library 'libv8_monolith.a' is missing one or more architectures required by this target: armv7.
解决方案:
直接把 armv7 删掉
但是线上用户还有的设备需要armv7,armv7s这个就没办法支持了吗
这个在转到使用 v8 后就不支持了,v8 不支持 32 位设备。之前使用的是 JSC,所以能够支持 32 位,但是之前经过讨论觉得 32 位设备市场占有率太低就不支持了。否则引擎得同时维护 JSC 和 V8,带来的工作量增加不少。
和同事仔细分析了下,引擎本身是支持 armv7 的,但是因为 Xcode 升级导致了不兼容。具体原因是这样的:引擎在链接库依赖里加了 v8 的依赖,但是在 32 位设备上是不会去链接的,在之前的 Xcode 版本没有问题。但是新版本的 Xcode 可能改了规则,不以是否有链接来判断,只要是设置了依赖就会去查找对应架构的库是否存在。
所以我们打算在胖包 libv8_monolith.a 里打入一个假的 armv7 架构的 v8 库,骗过 Xcode 的流程,因为最后反正也不回去链接。这个方式不知道是否可行,还得试验。
对于不支持 armv7 架构的游戏直接按照上面的做法把 armv7 去掉就可以了。