通常有两种主流的集成方式,它们的核心区别在于是否需要团队所有成员都安装 Flutter SDK。下面这个表格可以帮你快速理解并做出选择:
| 特性 | 源码集成 | AAR 集成 |
|---|---|---|
| 适用场景 | 团队协作开发,需要频繁调试 Flutter 代码 。 | 团队只需集成功能,无需安装 Flutter SDK 。 |
| 优点 | 一键式构建,修改 Flutter 代码后可以立即生效,支持热重载 。 | 隔离性好,原生项目无需安装 Flutter 环境,构建速度更快 。 |
| 缺点 | 所有开发人员都必须在本地安装 Flutter SDK 。 | 每次更新 Flutter 代码,都需要重新运行 flutter build aar 命令 。 |
接下来,我们看看具体的操作步骤。
🚶 操作步骤:从创建到集成
整个过程可以分为三步:创建模块、配置宿主项目、添加依赖。
第一步:创建 Flutter 模块
假设你的 Android 原生项目位于 some/path/MyApp,打开终端,进入这个目录的上级目录,然后执行以下命令来创建一个同级的 Flutter module:
cd some/path/
flutter create -t module --org com.example my_flutter_module
这里的 --org 参数指定了你的包名,my_flutter_module 是模块的名字 。创建成功后,你会得到一个包含 Dart 代码的 Flutter 模块项目。
第二步:配置 Android 宿主项目
在连接两者之前,需要对你的 Android 项目进行一些基础配置,以确保兼容性 。
-
Java 版本要求:在你的 Android 项目(
MyApp/app/build.gradle)中,确保compileOptions指定了 Java 17。android { // ... compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } // ... } -
统一仓库配置:在你的项目根目录的
settings.gradle文件中,配置统一的仓库管理,并添加 Flutter 所需的 Google 仓库。dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { google() mavenCentral() // 添加 Flutter 的下载仓库 maven { url 'https://storage.googleapis.com/download.flutter.io' } } }
第三步:选择并配置依赖
这一步是关键,你可以根据之前的对比表格,选择最适合你当前开发阶段的方式。
✅ 方案 A:源码集成 (适合日常开发) 这种方式下,Flutter 模块会像一个 Android Library 模块一样被引用。
-
配置
settings.gradle:在你的 Android 项目 (MyApp/settings.gradle) 中,添加以下代码来引入 Flutter 模块。// 将 my_flutter_module 替换为你创建的模块名 def flutterProjectRoot = new File(settingsDir, "../my_flutter_module") def flutterModuleFile = new File(flutterProjectRoot, ".android/include_flutter.groovy") if (flutterModuleFile.exists()) { // 这行脚本会帮你自动配置好 :flutter 项目和它的插件 apply from: flutterModuleFile } include ':app'注意:这里的路径
"../my_flutter_module"是相对于你的 Android 项目settings.gradle文件的位置,请根据实际情况调整 。 -
添加依赖:在你的 app 模块的
build.gradle文件中,添加对 Flutter 模块的依赖。dependencies { // ... implementation project(':flutter') }
✅ 方案 B:AAR 集成 (适合持续集成或无需 Flutter 环境的团队) 这种方式会将 Flutter 模块打包成 AAR 文件,让原生项目像引用远程仓库一样引用它。
-
生成 AAR:在 Flutter 模块的目录下 (
some/path/my_flutter_module),执行构建命令:flutter build aar执行成功后,控制台会输出详细的引入指引,一般包含以下两步 。
-
配置仓库:在 Android 项目的
settings.gradle的repositories中,添加刚才构建输出的本地 Maven 仓库路径。dependencyResolutionManagement { repositories { // ... 其他仓库 maven { url 'some/path/my_flutter_module/build/host/outputs/repo' // 这是相对路径,请替换为你的绝对路径或正确相对路径 } } } -
添加依赖:在你的 app 模块的
build.gradle文件中,为不同的构建类型添加对应的依赖。dependencies { // ... debugImplementation 'com.example.my_flutter_module:flutter_debug:1.0' releaseImplementation 'com.example.my_flutter_module:flutter_release:1.0' // 如果需要 profile 模式,可以这样添加 // profileImplementation 'com.example.my_flutter_module:flutter_profile:1.0' }
完成以上配置后,同步 Gradle,你就可以在原生代码中通过 FlutterActivity 来打开 Flutter 页面了。