Flutter Android 打包核心配置与常见坑¶
Flutter Android 打包的标准配置和避坑指南,通用于所有 Flutter 项目 更新:2026-05-11
一、核心概念(必须理解)¶
1. Flutter Android 构建链¶
flutter build apk --release
↓
调用 gradlew
↓
下载对应版本 Gradle
↓
Gradle 执行 build.gradle
↓
编译 Android 项目
2. 关键文件位置¶
| 文件 | 作用 | 注意 |
|---|---|---|
android/build.gradle |
项目构建配置 | 不要手动改版本 |
android/app/build.gradle |
App 构建配置 | 主战场 |
android/gradle.properties |
Gradle 全局参数 | JVM 内存/编码 |
3. Flutter Gradle 与系统 Gradle 的关系¶
系统装的 Gradle = 摆设,Flutter 项目用 Gradle Wrapper 强制自己下载。
二、标准配置(直接复制使用)¶
1. android/build.gradle¶
buildscript {
ext.kotlin_version = '1.8.10'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.4'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.layout.buildDirectory
}
2. android/gradle.properties¶
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8
3. pubspec.yaml 核心依赖¶
name: vexfy
description: "Vexfy - 个人音乐播放器"
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ^3.11.5
dart-native-assets: false
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.8
get: ^4.6.6
sqflite: ^2.3.3
path_provider: ^2.1.3
just_audio: ^0.9.40
audio_service: ^0.18.15
on_audio_query_pluse: ^3.0.6 # 必须用 3.x+,不要用 1.x
uuid: ^4.4.2
crypto: ^3.0.3
path: ^1.9.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^6.0.0
sqflite_common_ffi: ^2.4.0+3 # 桌面平台才需要
flutter:
uses-material-design: true
三、常见坑与解决方案¶
坑1:jcenter 废弃导致依赖下载失败¶
问题表现:
Could not resolve xxx
> Could not get resource 'https://jcenter.bintray.com/...'
原因: jcenter 2021 年已废弃,新版 Gradle 不再支持。
解决: 仓库只保留 google() + mavenCentral(),不要加任何 jcenter 镜像。
repositories {
google()
mavenCentral()
// 不要加 jcenter()、aliyunjcenter()、maven.aliyun.com
}
坑2:Namespace not specified(AGP 7.1.0+)¶
问题表现:
Namespace not specified for plugin xxx
原因: AGP 7.1.0+ 强制要求 namespace,老插件不兼容。
解决:
1. 升级到支持 namespace 的插件版本(如 on_audio_query_pluse: ^3.0.6)
2. 或降级 AGP 到 7.0.4(治标不治本,不推荐)
坑3:构建内存不足 / 编码异常¶
问题表现:
OutOfMemoryError
Unsupported charset: "GBK"
解决: gradle.properties 配置:
org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8
坑4:Gradle 下载慢 / 失败¶
原因: Gradle 官网下载慢,或者没放到正确目录。
解决: 1. 配置国内镜像(可选) 2. 手动下载 zip 放到指定目录(根治)
四、固定打包命令¶
# 每次打包前清理缓存(必须)
flutter clean
# 安装依赖
flutter pub get
# 打包 Release APK
flutter build apk --release
黄金规则:clean + pub get 后再打包,清缓存避免异常。
五、版本对应表¶
| Flutter 版本 | AGP 版本 | Kotlin 版本 | Gradle 版本 |
|---|---|---|---|
| 3.24+ | 8.5+ | 1.9+ | 8.14+ |
| 3.22+ | 8.3+ | 1.9+ | 8.10+ |
| 3.20+ | 8.2+ | 1.8+ | 8.4+ |
| 3.16+ | 8.2+ | 1.8+ | 8.4+ |
AGP 7.0.4 + Kotlin 1.8.10 + Flutter 3.24+ 是当前最稳定组合。
六、禁用规则(永久遵守)¶
- ❌ 禁用 jcenter 及所有 jcenter 镜像
- ❌ 禁用阿里云 maven 镜像(不稳定)
- ❌ 禁止手动改 gradle-wrapper.properties 的 Gradle 版本
- ❌ 禁止使用 1.x 版本的
on_audio_query(用on_audio_query_pluse)
最后更新:2026-05-11