升级Sonoma14与Xcode15后Flutter项目CocoaPods构建循环错误求助
修复Xcode 15下Flutter项目Runner Target依赖循环问题
针对你遇到的Cycle inside Runner构建错误,以下是经过验证的修复方案:
核心修复步骤
调整Build Phases顺序
打开iOS项目的Runner.xcworkspace,选中Runner target进入Build Phases标签:- 找到
Thin Binary脚本阶段,将其拖拽到[CP] Embed Pods Frameworks之前 - 确认
[CP] Copy Pods Resources位于[CP] Embed Pods Frameworks之后,且在Copy Bundle Resources阶段之前
- 找到
修改Thin Binary脚本的输入输出依赖
编辑Thin Binary脚本的Input Files和Output Files配置:- 输入仅指定主App二进制文件:
$(BUILT_PRODUCTS_DIR)/$(EXECUTABLE_PATH) - 输出指定瘦身后的二进制路径:
$(BUILT_PRODUCTS_DIR)/$(EXECUTABLE_PATH)
避免让脚本依赖整个Frameworks目录,减少和Embed Pods阶段的交叉依赖
- 输入仅指定主App二进制文件:
检查Share Extension的依赖配置
选中Share Extension target,进入Build Phases:- 确保
[CP] Embed Pods Frameworks和[CP] Copy Pods Resources仅处理Extension自身的依赖 - 删除主App Runner target中可能重复复制Extension资源的配置
- 确保
更新依赖工具版本
- 升级Flutter到适配Xcode 15的稳定版:
flutter upgrade - 清理并重新安装CocoaPods依赖:
cd ios pod deintegrate pod repo update pod install
- 升级Flutter到适配Xcode 15的稳定版:
彻底清理构建缓存
flutter clean rm -rf ~/Library/Developer/Xcode/DerivedData重启Xcode后重新尝试构建
问题原因
Xcode 15对构建阶段的依赖检测逻辑更加严格,旧版本项目中Thin Binary脚本的执行顺序和模糊的输入输出定义,会导致它与[CP] Embed Pods Frameworks阶段产生循环依赖——前者会修改后者已经处理完成的Frameworks目录,触发Xcode的循环检测机制。同时,Share Extension的资源复制流程也可能加剧这种依赖冲突。
内容的提问来源于stack exchange,提问作者Marek Halmo
相关产品推荐
相关产品推荐

