You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter iOS模拟器运行报错:Runner存在循环依赖,构建结果不可靠

解决Flutter iOS模拟器运行时Xcode循环依赖错误(Cycle inside Runner)

问题重现

运行带Widget Extension的Flutter iOS项目时,Xcode抛出循环依赖错误:

Error (Xcode): Cycle inside Runner; building could produce unreliable results.
Cycle details:
→ Target 'Runner': CodeSign /Users/asmaalkhaldi/Desktop/Brmjha/tajiduh-1/build/ios/Debug-iphonesimulator/Runner.app
○ That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”
○ Target 'Runner' has copy command from '/Users/asmaalkhaldi/Desktop/Brmjha/tajiduh-1/build/ios/Debug-iphonesimulator/AthkarWidgetExtension.appex' to '/Users/asmaalkhaldi/Desktop/Brmjha/tajiduh-1/build/ios/Debug-iphonesimulator/Runner.app/PlugIns/AthkarWidgetExtension.appex'
○ That command depends on command in Target 'Runner': script phase “Thin Binary”
○ Target 'Runner' has process command with output '/Users/asmaalkhaldi/Desktop/Brmjha/tajiduh-1/build/ios/Debug-iphonesimulator/Runner.app/Info.plist'
○ Target 'Runner' has copy command from '/Users/asmaalkhaldi/Desktop/Brmjha/tajiduh-1/build/ios/Debug-iphonesimulator/AthkarWidgetExtension.appex' to '/Users/asmaalkhaldi/Desktop/Brmjha/tajiduh-1/build/ios/Debug-iphonesimulator/Runner.app/PlugIns/AthkarWidgetExtension.appex'
2

command: P0:target-Runner-18c1723432283e0cc55f10a6dcfd9e0288a783a885d8b0b3beb2e9f90bde3f49-:Debug:Copy /Users/asmaalkhaldi/Desktop/Brmjha/tajiduh-1/build/ios/Debug-iphonesimulator/Runner.app/PlugIns/AthkarWidgetExtension.appex /Users/asmaalkhaldi/Desktop/Brmjha/tajiduh-1/build/ios/Debug-iphonesimulator/AthkarWidgetExtension.appex

调整Embed Pods Frameworks至Run Script上方后问题仍存在。

解决方案

1. 调整Widget Extension复制步骤的执行顺序

打开Xcode,进入Runner target的Build Phases标签:

  • 找到复制AthkarWidgetExtension.appex的Copy Files阶段(目标路径为PlugIns)
  • 将该阶段拖拽到[CP] Embed Pods Frameworks和Thin Binary两个脚本阶段之前
  • 保存配置后重新编译

2. 修改Widget Extension的构建设置

进入AthkarWidgetExtension target的Build Settings标签:

  • 搜索Skip Install选项,将其值设置为YES
  • 该设置会避免Extension产物被重复复制,打破依赖循环链

3. 清理构建缓存

执行以下命令彻底清理Flutter和Xcode的构建缓存:

flutter clean
cd ios
pod deintegrate
pod install
cd ..

清理完成后重启Xcode,重新运行项目。

4. 检查Info.plist处理逻辑

若项目中有自定义处理Info.plist的脚本,需确认该脚本的执行顺序不会与Extension复制步骤形成依赖闭环,必要时调整其在Build Phases中的位置。

错误原因

该循环依赖由Runner target内的多个操作互相依赖导致:复制Widget Extension的操作依赖Thin Binary脚本,而CodeSign操作又依赖Embed Pods Frameworks脚本,同时Info.plist的处理逻辑又与这些步骤形成了闭环,导致Xcode无法确定正确的执行顺序。

内容的提问来源于stack exchange,提问作者asma alkhaldi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:16:22