Xcode 15.3中归档Flutter应用时遭遇多命令冲突构建错误求助
兄弟我完全懂你卡这个归档bug的崩溃感!之前我在Xcode15.x上打包Flutter项目也碰到过几乎一样的GTMSessionFetcher冲突问题,先把你遇到的错误再明确下,你归档时应该是弹出这两个报错:
Multiple commands produce '/Users/vladrabets/Library/Developer/Xcode/DerivedData/Runner-glcckwmfvouzcwbashuiinywfldz/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/GTMSessionFetcher_Core_Privacy.bundle'
Multiple commands produce '/Users/vladrabets/Library/Developer/Xcode/DerivedData/Runner-glcckwmfvouzcwbashuiinywfldz/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/GTMSessionFetcher.framework'
你说试过删[CP] Copy Pods Resources里的文件、升级pod最低部署到iOS12.0都没用,那给你几个亲测有效的排查解决步骤,一个个来试:
彻底清理项目缓存与Pod依赖:这是解决依赖冲突最基础也最容易见效的操作
- 先在项目根目录执行
flutter clean清理Flutter构建缓存 - 进入iOS目录:
cd ios - 解除Pod与项目的关联:
pod deintegrate - 清空所有Pod缓存:
pod cache clean --all - 重新安装Pod依赖:
pod install - 回到项目根目录:
cd ..,先尝试执行flutter build ios --release确认能正常构建,再去Xcode里归档
- 先在项目根目录执行
排查并解决重复依赖问题:这个错误大概率是某个Flutter插件间接重复引入了GTMSessionFetcher
- 进入iOS目录后,执行
pod search GTMSessionFetcher查看当前可用的稳定版本 - 打开
Podfile.lock文件,搜索GTMSessionFetcher,查看它的依赖树,找到是哪些插件同时引入了它 - 如果发现是两个插件依赖了不同版本的GTMSessionFetcher,可以在Podfile里手动指定统一版本,比如添加:
或者用pod 'GTMSessionFetcher', '~> 3.3.0'pod exclude语法排除某个插件的冗余子依赖(如果确定不需要的话)
- 进入iOS目录后,执行
调整Xcode构建配置细节:
- 打开
ios/Runner.xcworkspace,选中Runner目标,进入Build Settings - 搜索
Build Options,找到Enable Legacy Build System(Xcode15里如果找不到就搜Legacy关键词),设置为Yes后再尝试归档 - 检查
Build Phases里的Copy Pods Resources和Embed Frameworks,确保GTMSessionFetcher相关的bundle和framework只出现一次,重复的条目直接删掉
- 打开
升级Flutter与插件版本:版本兼容问题也是这类冲突的重灾区
- 执行
flutter upgrade把Flutter升级到最新稳定版 - 用
flutter pub outdated查看可升级的第三方插件,打开pubspec.yaml把所有插件都升级到最新的兼容版本 - 重复第一步的清理和Pod安装步骤,再尝试归档
- 执行
如果这些步骤都试过还不行,你可以把Podfile的内容和Podfile.lock里GTMSessionFetcher相关的依赖树贴出来,我再帮你深挖问题!
备注:内容来源于stack exchange,提问作者kolobok

