Xcode如何修复 ‘No such module Flutter’

58 阅读4分钟

image.png

在使用 Flutter iOS 项目时,你是否在 Xcode 中遇到过令人沮丧的“No such module 'Flutter'”错误?别担心,你不是一个人!虽然 Flutter 让编写跨平台应用变得异常简单,但深入开发原生 iOS 应用时,有时却会遇到意想不到的难题。当你在 Xcode 中打开生成的 iOS 文件夹时,尤其是在尝试与 Flutter 特有的代码交互时,经常会遇到此错误。 别担心,这个看似复杂的问题其实有简单的解决方法。本指南将一步步引导您解决“找不到模块‘Flutter’”错误,让您继续构建精彩的应用。

理解问题

你或许可以从 Flutter 代码中调用原生 iOS 方法而不会遇到问题。但是,当你在 Xcode 中打开 ios 文件夹并查看诸如 AppDelegate.swift 之类的文件时,可能会看到红色的“No such module 'Flutter'”错误,尤其是在导入语句或引用 Flutter 特有的类(例如 FlutterViewController)时。

image.png

这意味着什么?本质上,Xcode 无法正确识别 iOS 项目构建配置中的 Flutter 框架。即使项目理论上可以编译,这也会导致您无法在 Xcode 环境中轻松编写或浏览 Flutter 相关代码。

简单解决方案:连接 Flutter 框架 解决方法是在 Xcode 中将 Flutter 框架显式链接到 iOS 项目目标。具体操作方法如下:

在 Xcode 中打开 Flutter 项目的 ios 文件夹:导航到 Flutter 项目目录,然后在 Xcode 中打开 ios/Runner.xcworkspace 文件。 选择“Runner”项目:在 Xcode 项目导航器(通常在左侧)中,单击顶层“Runner”项目。 选择“Runner”目标:在“目标”部分,选择第二个“Runner”条目(带有 Flutter 徽标的条目)。 导航至“常规”选项卡:在主编辑器区域中,您会看到几个选项卡。单击“常规”选项卡。 找到“框架、库和嵌入式内容”部分:向下滚动找到此部分。您很可能会看到 Pods_Runner.framework 列在其中。

image.png

在 Finder 中显示 Flutter 框架: 打开一个新的 Finder 窗口。 进入 Flutter 在系统中的安装目录。具体目录可能因安装方式而异。您可以使用which flutter终端命令查找路径。 导航至 Flutter SDK 目录。 然后转到 bin -> cache -> artifacts -> engine -> ios。 在这个文件夹中,你会找到一个名为“.”的文件Flutter.xcframework。

拖放Flutter.xcframework到 Xcode 中:

将此文件从 Finder 窗口直接拖到 Xcode 中的“框架、库和嵌入内容”部分。 验证嵌入: 框架安装完成后,Xcode 会将其添加到列表中。请确保 Flutter.xcframework 的“嵌入”列设置为“嵌入并签名”。

清理并构建项目:在 Xcode 中,转到“产品”菜单,然后选择“清理构建文件夹…”(或使用快捷键 Shift + Command + K)。清理后,转到“产品”->“构建”(或 Command + B)。

结果:不再出错! 构建过程成功完成后,“找不到模块 'Flutter'”的错误应该会从您的 AppDelegate.swift 文件以及其他可能使用 Flutter 相关代码的 iOS 原生文件中消失。Xcode 现在能够识别 Flutter 框架,从而提供更好的代码补全和导航功能。

您可以使用此解决方案来修复为 Flutter 编写原生插件时出现的相同错误。

更多提示

检查 Flutter SDK 路径:如果您安装了多个 Flutter 版本,请确保 Xcode 指向正确的版本。您可以通过在终端运行以下命令来检查这一点flutter doctor -v。 更新 Flutter:请确保您使用的是最新版本的 Flutter。flutter upgrade在终端中运行命令以获取最新更新。 Pod 安装:如果您使用 CocoaPods,请确保已pod install在 Flutter 项目的 ios 目录中运行该命令。这将确保所有依赖项都已正确设置。 Xcode 版本:请确保您使用的 Xcode 版本与 Flutter SDK 兼容。有时,新版本的 Xcode 可能会引入一些更改,需要对 Flutter 框架进行相应的更新。 请注意,Pod install 命令未来将被弃用。Swift Package Manager 是管理 Flutter 和 iOS 项目中依赖项的新方法。

为什么会发生这种事?

此错误通常是由于 Xcode 需要明确指示 Flutter 框架的位置而导致的。通过将 Flutter.xcframework 拖放到“框架、库和嵌入内容”部分,您就告诉 Xcode 在构建过程中包含并链接此框架。

结论

处理构建错误是开发过程中令人沮丧的一部分。然而,Xcode 中出现的“No such module 'Flutter'”错误通常很容易解决。按照以下步骤链接 Flutter 框架,可以确保在使用 Flutter 和原生 iOS 代码时获得更流畅的开发体验。

现在,您可以自信地在 Xcode 中编写和浏览集成了 Flutter 的 iOS 项目,而无需再担心恼人的错误。祝您编码愉快!

原文链接