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

Flutter升级至3.16.0后iOS出现Cycle inside Runner构建错误求助

Flutter 3.16.0升级后iOS构建出现"Cycle inside Runner"错误的解决方法

问题分析

从错误日志可以看出,构建循环的核心是OneSignalNotificationServiceExtension的复制操作与Runner Target的Thin Binary、[CP] Embed Pods Frameworks脚本执行顺序冲突,导致Xcode无法解析正确的依赖链。这是Flutter 3.16.0升级后,Xcode构建阶段默认配置变化与第三方扩展(如OneSignal)不兼容引发的问题。

解决步骤

1. 调整Runner Target的构建阶段顺序

  • 打开项目的ios/Runner.xcworkspace
  • 选中Runner Target,切换到Build Phases标签页
  • 拖拽调整脚本顺序,确保:
    • Thin Binary 脚本位于 [CP] Embed Pods Frameworks 之前
    • Copy Files(复制OneSignalNotificationServiceExtension.appex的步骤)位于 [CP] Embed Pods Frameworks 之后、Code Sign 之前

2. 添加扩展的目标依赖

  • 在Runner Target的Build Phases中,找到Target Dependencies
  • 点击+号,添加OneSignalNotificationServiceExtension,确保Runner会等待扩展构建完成后再执行后续步骤

3. 优化Thin Binary脚本(仅真机执行)

  • 打开Thin Binary脚本内容,在原代码外层添加条件判断,让脚本仅在真机构建时运行:
    if [ "$CONFIGURATION" = "Release" ] || [ "$PLATFORM_NAME" != "iphonesimulator" ]; then
        # 原脚本内容保持不变
        /usr/bin/xcrun lipo -remove "$ARCHS_TO_EXCLUDE" -output "$TARGET_BUILD_DIR/$INFOPLIST_PATH" "$TARGET_BUILD_DIR/$INFOPLIST_PATH"
    fi
    
    模拟器构建不需要二进制瘦身,这一步可以避免不必要的依赖触发。

4. 彻底清理后重新构建

  • 执行命令清理Flutter缓存:
    flutter clean
    
  • 删除iOS目录下的Pods文件夹和Podfile.lock文件
  • 更新并安装Pods:
    cd ios && pod install --repo-update
    
  • 重启Xcode,清理Derived Data(路径:Xcode -> Settings -> Locations -> Derived Data,点击右侧箭头删除对应文件夹)
  • 重新运行项目

5. 升级OneSignal插件(可选)

检查pubspec.yaml中的onesignal_flutter版本,升级到适配Flutter 3.16.0的最新版本,避免插件与新版本Flutter的兼容性问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:07:09