Xcode 15验证iOS 18构建报错:Asset Validation failed (contains bitcode)
解决Xcode 15验证iOS 18构建包时的Bitcode资产验证失败问题
定位问题根源
首先找出包含Bitcode的目标Framework——这类未声明的框架大概率是依赖的子依赖或Xcode自动引入的:
- 用终端批量检测项目Frameworks目录下的所有框架:
也可以直接到for file in "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"/*.framework; do otool -l "$file" | grep -q "__bitcode" && echo "$file 包含Bitcode" doneProducts/YourApp.app/Frameworks目录下,逐个验证:
输出包含otool -l YourFramework.framework/YourFramework | grep bitcode__bitcode的即为问题框架。
针对性解决措施
1. 处理第三方依赖的子框架
若问题框架是某个Pod的子依赖:
- 查看该Pod的官方文档或仓库,确认是否有移除Bitcode的新版本,升级后重新执行
pod install。 - 若暂时无法升级,在Podfile中添加配置强制禁用该子依赖的Bitcode:
post_install do |installer| installer.pods_project.targets.each do |target| # 替换为问题框架对应的Target名称 if target.name == "ProblematicFramework" target.build_configurations.each do |config| config.build_settings['ENABLE_BITCODE'] = 'NO' end end end end
2. 全局禁用所有Target的Bitcode
确保项目及所有依赖彻底关闭Bitcode:
- 在Podfile中添加全局配置,覆盖所有Pod的Build Settings:
post_install do |installer| # 处理所有Pod Target installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ENABLE_BITCODE'] = 'NO' config.build_settings['BITCODE_GENERATION_MODE'] = 'bitcode' end end # 同步处理主项目Target installer.project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ENABLE_BITCODE'] = 'NO' end end end - 执行
pod deintegrate彻底清理依赖,再重新pod install。
3. 清理缓存后重新构建
- 执行Xcode清理:
Cmd + Shift + K,再删除Derived Data(Xcode → 设置 → 位置 → Derived Data,打开文件夹后删除对应项目的缓存)。 - 重启Xcode,重新构建项目后再尝试验证提交。
4. 排查Xcode自动引入的框架
若问题框架是系统或Xcode自动添加的:
- 打开项目
Build Phases → Link Binary With Libraries,检查该框架是否为业务必需,非必需则直接移除。 - 若为必需的系统框架,尝试更新Xcode 15到最新测试版(若使用Beta版),苹果通常会在新版本中修复这类兼容性问题。
内容的提问来源于stack exchange,提问作者Nijat Naghiyev
相关产品推荐
相关产品推荐

