Xcode 16上传App Store失败:Bitmovin Player含Bitcode问题
解决Xcode 16上传App Store时Bitmovin Player框架含Bitcode的ITMS-90482错误
问题背景
升级到Xcode 16后,上传应用至App Store Connect时收到错误:
ITMS-90482: Invalid Executable - The executable ‘YourApp.app/Frameworks/BitmovinPlayer.framework/BitmovinPlayer’ contains bitcode.
Apple从Xcode 14开始弃用Bitcode,Xcode 16完全拒绝含Bitcode的构建包,以下针对你的问题逐一解答:
1. Bitmovin是否提供不含Bitcode的iOS SDK更新版本?
是的,Bitmovin的iOS Player SDK从v3.29.0版本开始已默认移除Bitcode,后续所有稳定版都不再包含Bitcode。如果你的CocoaPods检查更新未获取到对应版本,建议:
- 检查Podfile中是否设置了旧版本限制,将版本改为
'~> 3.29'或最新稳定版 - 执行
pod repo update刷新本地Pod仓库后,再执行pod update BitmovinPlayer
2. 若没有,从预编译框架中移除Bitcode的推荐方法是什么?
如果暂时无法升级SDK,可通过以下步骤手动移除未加密预编译框架中的Bitcode:
- 拆分框架架构:将多架构可执行文件拆分为单个架构文件
lipo -extract arm64 YourApp.app/Frameworks/BitmovinPlayer.framework/BitmovinPlayer -o BitmovinPlayer-arm64 lipo -extract x86_64 YourApp.app/Frameworks/BitmovinPlayer.framework/BitmovinPlayer -o BitmovinPlayer-x86_64 - 剥离单个架构的Bitcode:对每个拆分后的文件执行Bitcode移除操作
xcrun bitcode_strip BitmovinPlayer-arm64 -r -o BitmovinPlayer-arm64-stripped xcrun bitcode_strip BitmovinPlayer-x86_64 -r -o BitmovinPlayer-x86_64-stripped - 合并处理后的架构:将单个架构文件重新合并为多架构文件
lipo -create BitmovinPlayer-arm64-stripped BitmovinPlayer-x86_64-stripped -o BitmovinPlayer-stripped - 替换原框架文件:将合并后的
BitmovinPlayer-stripped替换掉原框架中的可执行文件
如果执行bitcode_strip时提示操作无效,说明框架经过加密处理,这种情况下只能升级到官方无Bitcode的版本。
3. 有没有人成功在Xcode 16中搭配Bitmovin Player上传应用且未遇到该问题?
大量开发者已成功解决此问题,核心方案为:
- 升级Bitmovin Player SDK到v3.29.0及以上版本
- 确保项目全局关闭
Enable Bitcode设置(包括项目Target和Pods的Target)
满足以上两个条件后,即可正常在Xcode 16中构建并上传应用至App Store Connect。
内容的提问来源于stack exchange,提问作者Gaurav Singh
相关产品推荐
相关产品推荐

