最近项目中接了一个第三方的SDK,SDK的提供方为了能让开发人员在xcode模拟器下也可以运行调试,所以在一些framework中包含了x86_64框架,可是如果打iOS包的话,这里可以通过把“Validate Workspace”设置为“YES”来解决打包报错的问题,可以正常出包了。(“Validate Workspace”的设置请参考下图)
但是新的问题出现了,就是在苹果后台上传包里会报错,如下:
Asset validation failed (90087)
Unsupported Architectures. The executable for XXXX.app/Frameworks/AgoraRtcWrapper.framework contains unsupported architectures '[x86_64]'. (ID: 643f96cf-cd6b-4ad6-bc53-ebb77eab54dd)
说这个库里包含了不支持的框架,上传失败,此时我们需要做的是,把这个x86_64的框架从这个framework中删除,再重新打包;
在mac下,我们可以直接使用lipo -info 来查看framework包含哪些框架,例如上面这个
lipo -info AgoraRtcWrapper.framework/AgoraRtcWrapper
会输出
AgoraRtcWrapper.framework/AgoraRtcWrapper are: armv7 x86_64 arm64
可以看到确实包含了x86_64框架,那如何删除x86_64框架呢?还是用lipo命令,如下:
lipo -remove x86_64 AgoraRtcWrapper.framework/AipBase -o AgoraRtcWrapper.framework/AipBase
这样就可以把x86_64删除之后,再写回到原来的路径,最后我们再查看一下删除了x86_64的库,如下:
AgoraRtcWrapper.framework/AgoraRtcWrapper are: armv7 arm64
这里只剩下了armv7 arm64了。重新打包,这里已经不需要把“Validate Workspace”设置为“YES”了,打包后,上传,一次通过。