Xcode 11b2提交应用遇ITMS-90562 Bitcode编译失败问题求助
解决ITMS-90562 Bitcode符号缺失问题的可行方案
我之前在使用Xcode 11 beta版本提交包含Watch App的应用时,也碰到过完全一样的ITMS-90562错误,折腾了好几天才找到几个有效的解决方向,你可以逐个尝试:
排查第三方框架的Bitcode支持
这个问题大概率是第三方SDK的锅——很多老版本的框架没有正确编译Bitcode,导致Apple服务器重新编译时找不到符号。你可以这么做:- 打开项目的
Build Phases->Link Binary With Libraries,把所有非系统的第三方框架列出来。 - 用终端命令验证每个框架的Bitcode支持:
otool -l YourFramework.framework/YourFramework | grep bitcode。如果输出里有__LLVM相关的段,说明支持Bitcode;如果没有,赶紧联系框架开发者要支持Bitcode的版本,或者找替代框架。
- 打开项目的
彻底清理Xcode缓存再重新构建
Beta版Xcode的缓存经常抽风,残留的旧构建文件会导致符号丢失。试试这些步骤:- 关掉Xcode,通过
Xcode->Preferences->Locations找到Derived Data的路径,直接删掉整个文件夹。 - 打开Xcode后,按
Cmd+Shift+K清理项目,再按Cmd+Option+Shift+K清理构建文件夹。 - 重新归档并导出Ad-hoc包,不要用之前导出的旧包,直接重新生成后再上传。
- 关掉Xcode,通过
统一Watch App和Extension的Build设置
因为Watch平台强制Bitcode,必须确保Watch App和它的Extension的所有编译设置完全统一:- 分别选中Watch App和Watch Extension的目标,确认两者的
Enable Bitcode都设为Yes。 - 检查
Other C Flags和Other Linker Flags,避免出现冲突的自定义参数;同时确保Strip Debug Symbols During Copy这类选项没有影响Bitcode的保留。
- 分别选中Watch App和Watch Extension的目标,确认两者的
升级到更新的Xcode版本
Xcode 11b2是比较早期的beta版本,Apple在后续的beta和正式版里修复了大量Bitcode相关的bug。如果条件允许,直接升级到Xcode 11的正式版或者最新beta版本,很多时候这个问题会直接消失。手动模拟Bitcode编译流程排查
虽然本地导出包没报错,但可以手动模拟Apple的编译步骤来定位问题:- 导出带Bitcode的IPA后解压,找到里面的可执行文件和框架。
- 用命令
xcrun bitcode_strip -r YourApp.app/YourApp -o YourApp-stripped剥离Bitcode,如果这个过程报错,说明你的可执行文件本身的Bitcode存在问题,需要回到项目里检查编译链的设置。
内容的提问来源于stack exchange,提问作者Hunter
相关产品推荐
相关产品推荐

