iOS-打包报IPA processing failed错误

XCode 13 打包报错:IPA processing failed,这是我们项目中遇到的问题,通过Xcode直接在手机上Run,是可以正常运行的,但是导出IPA包的时候一直提示报错,网上查阅了一番资料,基本就以下几个方案:

  • 拼手速方案:https://blog.csdn.net/zgpeace/article/details/104693812

  • Rosetta方案:https://blog.csdn.net/boildoctor/article/details/115300865

  • i386,x86_86方案:https://juejin.cn/post/6984216568670453797

  • 重复Copy了一些SDK类库方案:https://zhuanlan.zhihu.com/p/444451533

网上方案千千万,但是针对项目有效可行的除了拼手速的,没有可行方案。拼手速取消Rebuild form Bitcode属于临时应急方案,又不能从根本解决问题,仔细看了下这几个文章,其中有一句话引起了我的注意:项目中使用的SDK支持i386,x86_86这个架构,猜测是iOS13强制不支持模拟器架构打包,应该是某framework的问题 。那就首先查阅项目中的自定义的framework,发现真有两个比较异常的,发现是动态库,假设库名为A.framework,B.frmework,移除这两个库中的其中一个库,最后排查定位B.framework的动态库有问题,至此,首先定位到问题了。

image.png

查看b.framewok的目录结构如下,发现b.framework是个动态库,里面还有一个framework包含两个.a静态库:

image.png
image.png

这种情况一分析就是Framework 嵌套与依赖 或者 静态库&动态库依赖探索 相关的问题了,查阅相关资料发现,文章中动态库依赖静态库的场景有句话引起我的注意:

image.png

联想项目中的动态库,感觉有点问题,这里有两种解决思路:
① 尝试将b.framework的动态库改为静态库;
② 将两个.a的静态库完全打到b.framework的动态库中;

基于对动态库了解不太熟悉,这里我先选择第一个方案,将b.framework的动态库改为静态库重新打包:

image.png

再次将这个b.framework的静态库引入项目中,选择 Do Not Embed 不签名方式,再次重新打包,发现可以正常打包了。

image.png

至此这个打包报错问题得到根本解决。这种问题一般都是静态东和静态库相互嵌套引起的,可以着重从这方面入手排查,当然还是得具体问题具体分析,结合项目框架来定位问题。

END.

你可能感兴趣的:(iOS-打包报IPA processing failed错误)