Flutter iOS归档报错:Xcode15.4下GTMSessionFetcher文件生成冲突
解决Xcode15.4下Flutter iOS归档的GTMSessionFetcher重复生成错误
以下是针对你遇到的重复生成GTMSessionFetcher_Core_Privacy.bundle和GTMSessionFetcher.framework问题的可行解决方案,按优先级尝试:
启用Xcode多命令输出允许选项
打开Xcode的Runner项目,进入Build Settings,搜索Allow Multiple Command Outputs,将其值设置为YES。这个是Xcode15新增的配置,专门用来解决同一输出文件被多个编译命令生成的冲突问题,很多开发者反馈这个能直接解决该类归档报错。彻底清理并重新构建依赖
- 执行命令彻底移除Pods:
pod deintegrate - 删除
Podfile.lock和Pods文件夹 - 执行
flutter clean清理Flutter构建缓存 - 重新安装Pods:
pod install - 最后尝试归档操作
- 执行命令彻底移除Pods:
排查并修复Pod依赖重复引入
- 打开
Podfile.lock,搜索GTMSessionFetcher,查看有哪些依赖间接引入了这个库,是否存在版本不一致的情况 - 如果发现多个依赖引用了不同版本,可在
Podfile中显式指定统一版本,比如:pod 'GTMSessionFetcher', '~> 2.3.0' - 执行
pod update GTMSessionFetcher更新到指定版本后重新构建
- 打开
用Post-Install脚本移除重复资源
在Podfile末尾添加以下脚本,自动清理Pods项目中重复的Bundle和Framework引用:post_install do |installer| installer.pods_project.targets.each do |target| # 遍历所有Pods目标,移除重复的GTMSessionFetcher相关资源 target.build_phases.each do |phase| if phase.name == 'Copy Bundle Resources' phase.files.reject! { |file| file.display_name == 'GTMSessionFetcher_Core_Privacy.bundle' } elsif phase.is_a?(Xcodeproj::Project::Object::PBXFrameworksBuildPhase) phase.files.reject! { |file| file.display_name == 'GTMSessionFetcher.framework' } end end end end添加后执行
pod install,再尝试归档升级Flutter到适配Xcode15.4的版本
确保你的Flutter版本是最新稳定版(建议3.16及以上),Flutter团队针对Xcode15系列的编译问题做了不少修复,执行flutter upgrade升级后重新构建项目
内容的提问来源于stack exchange,提问作者Taniksha Sharma
相关产品推荐
相关产品推荐

