React-Native iOS配套WatchOS App上传App Store Connect报ITMS-90496错误如何解决
可行解决思路
1. 强制所有Pod依赖统一开启bitcode
在项目的Podfile末尾添加post_install钩子,覆盖所有target的bitcode配置,避免部分第三方库默认关闭bitcode的问题:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 统一开启所有pod的bitcode config.build_settings['ENABLE_BITCODE'] = 'YES' # 配置全量bitcode编译标记,watchOS要求全量bitcode而非仅标记位 config.build_settings['OTHER_CFLAGS'] ||= [] config.build_settings['OTHER_CFLAGS'] << '-fembed-bitcode' config.build_settings['OTHER_SWIFT_FLAGS'] ||= [] config.build_settings['OTHER_SWIFT_FLAGS'] << '-embed-bitcode' end end end
添加后执行pod install重新生成Pods项目即可。
2. 手动给Watch Extension添加bitcode编译参数
Watch Target的UI设置里没有显式bitcode开关,可以直接在WatchKit Extension的Build Settings中手动添加参数:
- 找到
Other C Flags,添加-fembed-bitcode - 找到
Other Swift Flags,添加-embed-bitcode - 在Build Settings搜索框输入
bitcode查找所有相关配置,确认Bitcode Generation设置为Yes
3. 排查缺失bitcode的依赖库
如果配置后仍报错,可以用otool命令确认具体是哪个二进制文件缺失bitcode,定位问题依赖:
otool -l /Path/To/Your/WatchKit\ Extension.appex/WatchKit\ Extension | grep __LLVM
如果输出为空,说明对应二进制没有包含bitcode。如果是第三方静态库缺失,可要求库作者提供支持bitcode的版本,或者自行用对应源码开启bitcode重编译。
4. 确认归档配置
Xcode执行归档操作时,在导出TestFlight构建版本的步骤中,必须勾选Include bitcode for watchOS and App Clip content选项,否则即使编译时生成了bitcode,导出时也会被裁剪掉。
内容的提问来源于stack exchange,提问作者Yavuzalp Güler
相关产品推荐
相关产品推荐

