2、开发环境搭建:Flutter SDK安装、Android Studio配置、Gradle版本兼容性处理、创建第一个混合工程
说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多新手卡在这一步,一卡就是半天。今天咱们就把这事捋清楚,一步到位。
2.1 Flutter SDK 安装:选对版本很重要
先说说 Flutter SDK 的安装。我个人习惯用 stable 渠道,别追新,稳定才是王道。
- 下载 SDK:去 Flutter 官网下载对应系统的压缩包。我建议下载
flutter_linux_3.13.x-stable.tar.xz这种命名格式的版本。 - 解压到指定目录:比如我放在
/opt/flutter下。 - 配置环境变量:编辑
~/.bashrc或~/.zshrc,添加:
export FLUTTER_HOME=/opt/flutter
export PATH=$PATH:$FLUTTER_HOME/bin
然后执行 source ~/.bashrc 让它生效。
验证一下:
flutter doctor
这个命令会检查你的环境缺什么。我第一次跑的时候,红了一片。别慌,一个个解决就行。
2.2 Android Studio 配置:别漏了这些插件
Android Studio 是绕不开的。我建议用 最新稳定版,别用预览版,否则 Gradle 版本兼容性问题会让你头疼。
安装完成后,需要装几个关键插件:
- Flutter 插件:提供代码补全、热重载等功能
- Dart 插件:Flutter 的编程语言支持
- Android SDK 平台工具:确保你安装了
platform-tools和build-tools
打开 Android Studio,进入 File > Settings > Plugins,搜索安装就行。
嗯,这里要注意:Android SDK 路径一定要配好。我遇到过有人 SDK 路径带空格,结果编译报错,排查了半天。
2.3 Gradle 版本兼容性处理:最容易踩的坑
Gradle 版本兼容性,说白了就是 Flutter、Android Gradle Plugin(AGP)、Gradle 这三者要匹配。不匹配的话,编译直接崩。
我整理了一个对照表,你直接照着配就行:
| Flutter 版本 | AGP 版本 | Gradle 版本 |
|---|---|---|
| 3.13.x | 7.4.2 | 8.1.1 |
| 3.10.x | 7.3.1 | 8.0.2 |
| 3.7.x | 7.2.1 | 7.5.1 |
怎么改?打开 android/build.gradle 文件:
buildscript {
ext.kotlin_version = '1.9.0'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
再改 android/gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip
改完后,记得 File > Sync Project with Gradle Files。我每次改完都会清一下缓存:./gradlew clean。
2.4 创建第一个混合工程
环境搭好了,咱们来创建第一个混合工程。Flutter 提供了两种混合方式:
- Flutter 作为模块嵌入到现有 Android 项目
- Flutter 项目作为主工程,Android 作为模块
我推荐用第一种,因为实际项目中大多是现有 Android 工程要集成 Flutter。
创建 Flutter 模块:
flutter create --template module my_flutter_module
这会生成一个 my_flutter_module 目录,里面包含 .android 和 .ios 子目录。
然后在你的 Android 工程中,修改 settings.gradle:
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir.parentFile,
'my_flutter_module/.android/include_flutter.groovy'
))
再改 app/build.gradle,添加依赖:
implementation project(':flutter')
最后在 Java/Kotlin 代码中启动 Flutter:
// Kotlin 示例
val flutterEngine = FlutterEngine(this)
flutterEngine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
)
FlutterEngineCache.getInstance().put("my_engine_id", flutterEngine)
val flutterFragment = FlutterFragment.withCachedEngine("my_engine_id").build()
supportFragmentManager.beginTransaction()
.add(R.id.container, flutterFragment)
.commit()
我第一次跑通的时候,看到 Flutter 页面嵌在 Android 原生界面里,说实话挺激动的。但后来发现,热重载在混合模式下有点慢,这个后面会讲怎么优化。
flutter run 测试。如果报错,八成是 Gradle 版本问题,回头检查一下对照表。
2.5 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你跟着走,不会迷路。
这张图把四个核心步骤串起来了。你按这个顺序走,基本不会出大问题。如果卡住了,回头看看对应的章节。
好了,环境搭好了,咱们就可以正式开始混合开发了。下一章会讲 Flutter 和 Android 的通信机制,那个才是混合开发的精髓。