iOS提审ipa检测Framework包含不完整的bitcode ERROR ITMS-90668

iOS提审ipa检测Framework包含不完整的bitcode ERROR ITMS-90668

IOS小彩虹2021-08-26 19:51:39160A+A-

问题

提审上传 ipa 包的时候,遇到报错:

ERROR ITMS-90668: "Invalid Bundle Executable. 
The executable file 'XXX.app/Frameworks/MXFFI.framework/MXFFI' contains incomplete bitcode. 
To compile binaries with complete bitcode, open Xcode and choose Archive in the Product menu."

报错的 framework 是通过 pod 方式引入的。

是架构问题吗?如何查看ipa内的framework架构?

网上搜了下类似问题,比如这篇文章遇到的类似错误:

ERROR ITMS-90087:"Unsupported Architectures.
The executable for Demo.app/DemoSDK.framework contains unsupported architectures ‘[x86_64,i386]]."

但注意这里的差异,我遇到的错误是 contains incomplete bitcode ,而上面文章的是 contains unsupported architectures ,所以应该不是架构问题。但是防止遗漏,排查架构是否有问题:

  • 解开 ipa 包,解包方案: ipa 所在目录打开终端,输入
tar xf xxxxxx.ipa

注意命令前面的 tar xf 是固定的,后面加上 ipa 全称即可。

  • 解开后,同级目录下会生成 Payload 文件夹,打开 Payload 文件夹。

  • 看到 XXX.app ,右键“显示包内容”

  • 进入后再找到 Frameworks 目录,双击进入

  • 即可找到 MXFFI.framework ,双击进入

  • 存有 MXFFI 二进制文件的同级目录下打开终端,输入命令 lipo -info MXFFI

结果是:

➜  MXFFI.framework lipo -info MXFFI              
Architectures in the fat file: MXFFI are: arm64 

架构是 arm64 没有问题。

bitcode验证,如何查看ipa内framework是否开启bitcode?

看到 bitcode,猜测是工程编译选项 ENABLE_BITCODE 的问题:

这篇文章也讲到了 90668 这个问题,继续终端输入命令:

otool -arch arm64 -l ./MXFFI | grep __LLVM | wc -l

注意这个命令的 arm64 ,先通过前文方法确认你的 framework 架构,如果是 armv7 ,那命令也要把 arm64 改成 armv7-l 后面的 ./MXFFI 就是二进制文件所在路径。

结果是:

➜  MXFFI.framework otool -arch arm64 -l ./MXFFI | grep __LLVM | wc -l
       2

结果是非0,表示 ENABLE_BITCODEYES

查看编译工程,发现的确是这个问题:

ENABLE_BITCODE 改为 NO ,再次生成 framework ,更新 pod ,打包 ipa

再次查看结果

➜  MXFFI.framework otool -arch arm64 -l ./MXFFI | grep __LLVM | wc -l
       0

结果为0。bitcode已关闭。

提审后,问题解决。

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1
本网站由 提供CDN/云存储服务

联系我们