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

Xcode 13.2.1运行Flutter iOS应用报No such module 'Flutter'如何修复

iOS扩展Target编译报错No such module 'Flutter'修复方案

匹配环境

  • Xcode Version 13.2.1 (13C100)
  • Flutter SDK: 2.10.5
  • Dart: 2.16.2
  • Mac 处理器:Intel Core i7

操作步骤

  1. 先清理全量编译缓存,终端进入项目根目录依次执行以下命令:
    flutter clean
    flutter pub get
    cd ios
    pod deintegrate
    pod install --repo-update
    
  2. 执行完命令后,用Xcode打开ios/Runner.xcworkspace(注意必须打开xcworkspace后缀的工作区文件,不要打开xcodeproj后缀的项目文件),选中报错的扩展Target,打开Build Settings标签页修改以下配置:
    • 找到Framework Search Paths配置项,新增路径$(SRCROOT)/Flutter,设置搜索规则为recursive,同时在路径列表最顶部添加$(inherited),保证继承项目层级的路径配置
    • 找到Other Linker Flags配置项,新增$(inherited)和-framework Flutter两个参数
    • 找到Build Active Architecture Only配置项,Debug模式设置为Yes,Release模式配置和主Runner Target保持一致,避免Intel架构下编译架构不匹配
    • 找到iOS Deployment Target配置项,设置的最低系统版本必须和主Runner Target完全一致,不可高于主Target版本
  3. 切换到同Target下的Build Phases标签页,做以下检查和修改:
    • 展开Link Binary With Libraries列表,如果存在手动导入的错误路径Flutter.framework,先选中删除
    • 点击标签页左上角的+号,选择New Run Script Phase新建编译脚本,把新建的脚本拖到所有编译步骤的最前面,粘贴以下脚本内容:
      /bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
      
    • 展开新建脚本的Input Files列表,新增路径$(SRCROOT)/Flutter/Flutter.framework,避免重复触发Flutter编译
    • 禁止在扩展Target的Embed Frameworks步骤中添加Flutter.framework:iOS扩展不允许嵌套嵌入动态框架,直接嵌入会触发后续签名、符号重复报错,Flutter.framework只需要在主Runner Target的Embed Frameworks中配置即可
  4. 回到主Runner Target的Build Phases标签页,展开Embed Frameworks列表,确认Flutter.framework已在列表中,且勾选了Copy only when installing选项

踩坑提示:Flutter 2.10.5版本默认生成的Podfile不会自动为扩展Target关联Flutter依赖,不要手动在Podfile的扩展Target块中调用flutter_additional_pods方法,会导致编译时符号冲突。

内容的提问来源于stack exchange,提问作者Saad Aboulsooud Abdelmoaty Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:18:19