记一次Flutter 构建失败原因总结
根据之前的构建过程,我总结了以下几个主要问题:
最近使用trae来接管我的前端开发,并且将代码任务从react和compose转向了flutter。但是flutter没有更多的开发和构建经验,所以在鼓捣配置的过程中耗费了大量的时间,尽管有trae cn的帮助。现在分享出来,希望能帮到更多的人。
1. Gradle 与 AGP 版本不兼容
错误信息:
Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl
原因: Gradle 8.14 与 Android Gradle Plugin (AGP) 8.1.0 版本不兼容
解决方案: 升级 AGP 到 8.4.0+ 以兼容 Gradle 8.14
kotlin
// android/build.gradle.kts
dependencies {
classpath("com.android.tools.build:gradle:8.4.0") // 从 8.1.0 升级
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20")
}
2. Gradle 缓存损坏
错误信息:
Could not deserialize analysis from a file: ...instrumentation-hierarchy.bin
UncheckedExecutionException: java.lang.IllegalStateException
原因: Gradle 缓存文件损坏或不完整
解决方案:
bash
flutter clean
# 或手动删除 C:\Users\HP\.gradle\caches\8.14
3. 磁盘空间不足
错误信息:
java.io.IOException: 磁盘空间不足
原因: C 盘可用空间不足,Gradle 需要大量临时存储
解决方案: 将 Gradle 缓存目录指向空间充足的分区:
properties
# android/gradle.properties
GRADLE_USER_HOME=D:\code\.gradle
4. Maven 仓库 URL 语法错误
问题: Kotlin DSL 中 maven { url '...' } 语法不正确
错误代码:
kotlin
maven { url 'http://maven.aliyun.com/...' } // ❌ 错误
正确代码:
kotlin
maven { url = uri("https://maven.aliyun.com/...") } // ✅ 正确
5. AndroidX 配置缺失
警告信息:
Your app isn't using AndroidX
解决方案: 在 gradle.properties 中启用 AndroidX:
properties
android.useAndroidX=true
android.enableJetifier=true
6. Gradle 版本被意外更改
问题: 配置文件中的 Gradle 版本被改成了 8.5,而用户需要使用 8.14
解决方案: 保持用户指定的配置:
properties
# gradle-wrapper.properties
distributionUrl=file:///D:/code/gradle-8.14-all.zip
7. 依赖版本冲突
问题: pubspec.yaml 中某些依赖版本过低或不兼容
解决方案: 使用稳定且兼容的依赖版本:
yaml
dependencies:
dio: ^5.4.3+1
video_player: ^2.8.6
shared_preferences: ^2.2.2
go_router: ^12.1.3
最终成功构建的关键配置
| 配置项 | 值 |
|---|---|
| Gradle | 8.14 (本地) |
| AGP | 8.11.1 |
| Kotlin | 2.2.20 |
| compileSdk | 31 |
| minSdk | flutter.minSdkVersion |
| AndroidX | ✅ 已启用 |
| Maven 镜像 | 阿里云 (https) |
建议
- 保持网络畅通 - 首次构建需要下载大量依赖
- 定期清理缓存 - 使用
flutter clean避免缓存问题 - 使用国内镜像 - 加速依赖下载
- 保持配置稳定 - 不要随意更改 Gradle 和 AGP 版本