Xcode项目真机运行正常但Archive打包失败 报SwiftUI类型找不到错误
问题现象
- 正在开发的iOS应用可在iPhone真机上完美运行,但执行用于上传TestFlight的Archive构建时持续失败
- 报错集中在Pods依赖层面,核心报错信息如下:
can not find type 'Binding' in scope. unknown attribute 'ObservedObject' Cannot find '_observable' in scope
- 受项目规则限制无法升级现有Pods依赖,已尝试以下排查操作均未解决问题:
- 测试更新Pods依赖,报错未消除
- 尝试通用的"项目可构建运行但无法Archive"类常规解决方案,无效
- 移除全部Pods后重新集成依赖,问题依然存在
- 参照公开的Xcode12编译报错排查方案操作,在当前使用的
Xcode Version 13.4.1 (13F100)版本上无效果
- 打包目标选择测试:
- 选择
Any iOS Device (arm64)执行Archive,该配置在其他同开发环境的应用上可正常打包,本项目打包失败 - 选择已连接的实体iPhone作为目标设备执行Archive,依然打包失败

- 选择
解决步骤
每完成一步操作,先执行Shift+Command+K清理Xcode构建缓存,同时删除~/Library/Developer/Xcode/DerivedData目录下对应项目的缓存文件夹,再重新尝试Archive:
- 修正编译架构配置
打开Pods项目的Build Settings面板,找到Build Active Architecture Only选项,将Release配置的值从Yes改为No;同步检查主项目的同名配置,确保Release模式下该选项值为No。 - 关闭Pods依赖的Release全模块优化
Xcode 13.4.1存在已知问题:Release配置开启全模块优化时,会出现SwiftUI属性包装器符号丢失的情况。可在Podfile末尾添加如下post_install钩子,执行pod install后重新构建:post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| if config.name == 'Release' config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = '-Osize' config.build_settings['SWIFT_WHOLE_MODULE_OPTIMIZATION'] = 'NO' end end end end - 为Pods依赖显式添加SwiftUI弱链接
在上述post_install钩子的配置遍历逻辑中追加如下配置,给所有Pods target弱链接SwiftUI框架,解决符号找不到的问题:config.build_settings['OTHER_LDFLAGS'] ||= ['$(inherited)', '-weak_framework', 'SwiftUI'] - 统一Pods最低部署版本
检查所有使用了SwiftUI的Pods依赖的iOS最低部署版本,确保不低于iOS 13.0;如果主项目最低支持版本低于iOS13,可通过post_install钩子统一设置Pods的部署版本,配合上述弱链接配置即可避免低版本系统运行崩溃。
排查提示:如果以上步骤操作后仍报错,可临时将Archive使用的Build Configuration从Release改为Debug测试打包结果(仅用于问题定位,正式上传TestFlight不建议使用Debug配置)。如果Debug配置下Archive成功,即可确定是Release与Debug的编译参数差异导致问题,逐项对比两个配置下的Pods编译参数即可定位根因。
内容的提问来源于stack exchange,提问作者Muhammad Danish Qureshi
相关产品推荐
相关产品推荐

