2、开发环境搭建:Flutter SDK安装、Android Studio配置、Gradle版本兼容性处理、创建第一个混合工程

说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多新手卡在这一步,一卡就是半天。今天咱们就把这事捋清楚,一步到位。

2.1 Flutter SDK 安装:选对版本很重要

先说说 Flutter SDK 的安装。我个人习惯用 stable 渠道,别追新,稳定才是王道。

  1. 下载 SDK:去 Flutter 官网下载对应系统的压缩包。我建议下载 flutter_linux_3.13.x-stable.tar.xz 这种命名格式的版本。
  2. 解压到指定目录:比如我放在 /opt/flutter 下。
  3. 配置环境变量:编辑 ~/.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-toolsbuild-tools

打开 Android Studio,进入 File > Settings > Plugins,搜索安装就行。

嗯,这里要注意:Android SDK 路径一定要配好。我遇到过有人 SDK 路径带空格,结果编译报错,排查了半天。

避坑指南:我曾经因为 Android Studio 版本太老,导致 Flutter 插件不兼容。建议保持 Android Studio 在 2022.3 以上。

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

核心要点:Gradle 版本兼容性,是混合开发中最容易出问题的地方。建议每次升级 Flutter 后,第一时间检查 AGP 和 Gradle 版本。

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 混合开发环境 Flutter SDK 安装 • 选择 stable 渠道 • 配置环境变量 • 运行 flutter doctor Android Studio 配置 • 安装 Flutter/Dart 插件 • 配置 SDK 路径 • 避免路径带空格 Gradle 版本兼容性 • Flutter ↔ AGP ↔ Gradle 匹配 • 修改 build.gradle • 修改 gradle-wrapper.properties 创建混合工程 • flutter create --template module • 修改 settings.gradle • 在 Android 中启动 Flutter 环境搭建成功 → 可以开始混合开发了

这张图把四个核心步骤串起来了。你按这个顺序走,基本不会出大问题。如果卡住了,回头看看对应的章节。

好了,环境搭好了,咱们就可以正式开始混合开发了。下一章会讲 Flutter 和 Android 的通信机制,那个才是混合开发的精髓。

专注资料整理