gradle与AGP的关系
flutter旧项目升级Gradle版本
今天运行一个flutter旧版本(2.8.1)项目,报错跑不起来:exception in phase ‘semantic analysis‘ in source unit ‘_BuildScript_‘ Unsupported class file major version 61

意思是说,开发工具的java版本太高了,而项目配置的Gradle版本(这里是6.7)不支持这个Java版本.
查看本机配置的java版本:
1 | |
输出:
1 | |
发现Java版本是17,而Gradle6.7要求Java版本是11以下,所以要么Gradle版本升级,要么降低Java版本到11.
这里选择升级Gradle版本到7.3.3,在android/gradle/wrapper/gradle-wrapper.properties文件中找到distributionUrl这一行,修改:
1 | |
同时修改在android/build.gradle文件中的gradleVersion为7.2.0:
1 | |
注意两者路径不要搞混:
- Gradle配置路径:android/gradle/wrapper/gradle-wrapper.properties
- Gradle插件配置路径:android/build.gradle
修改完之后:
运行,新的报错:The option 'android.jetifier.blacklist' is deprecated.
解决办法:
最后,修改compileSdkVersion和targetSdkVersion版本为32
compileSdkVersion和targetSdkVersion区别:
- compileSdkVersion:编译SDK版本,编译时使用的SDK版本,一般情况下,编译时使用的SDK版本应当和targetSdkVersion保持一致.
- targetSdkVersion:目标SDK版本,运行时使用的SDK版本,一般情况下,应当选择最新的SDK版本,以获得最新的特性和安全更新.
什么是Gradle?
Gradle是一个自动化构建工具,它可以自动执行各种任务,例如编译,测试,打包,发布,依赖管理等。Gradle基于Groovy语言,支持多种语言,包括Java,Groovy,Kotlin,Scala等。
在使用 Gradle 时,通常需要使用 Java Development Kit (JDK) 来编译、运行和测试你的项目。
什么是Android Gradle Plugin (AGP)?
Android Gradle Plugin (AGP) 是 Gradle 的一部分,它是 Android 项目的构建系统,负责编译,打包,测试,签名和发布 Android 应用。AGP 基于 Gradle,并提供一系列插件来支持 Android 开发。
不做安卓原生开发,不了解这些配置的对应关系,通过搜索,查看官网(https://developer.android.com/build/releases/gradle-plugin?hl=zh-cn),找到如下对应关系:
| 插件版本 | 所需最低Gradle版本 |
|---|---|
| 8.8 | 8.10.2 |
| 8.7 | 8.9 |
| 8.6 | 8.7 |
| 8.5 | 8.7 |
| 8.4 | 8.6 |
| 8.3 | 8.4 |
| 8.2 | 8.2 |
| 8.1 | 8.0 |
| 8.0 | 8.0 |
| 7.4 | 7.5 |
| 7.3 | 7.4 |
| 7.2 | 7.3.3 |
| 7.1 | 7.2 |
| 7.0 | 7.0 |
| 4.2.0+ | 6.7.1 |
| 4.1.0+ | 6.5+ |
| 4.0.0+ | 6.1.1+ |
| 3.6.0 - 3.6.4 | 5.6.4+ |
| 3.5.0 - 3.5.4 | 5.4.1+ |
| 3.4.0 - 3.4.3 | 5.1.1+ |
| … |
Android Gradle 插件和 Android Studio 兼容性
Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件 (AGP) 添加了几项专用于构建 Android 应用的功能。下表列出了各个 Android Studio 版本所需的 AGP 版本。
| Android Studio 版本 | 所需的 AGP 版本 |
|---|---|
| Ladybug 功能更新 | 2024.2.2 | 3.2-8.8 |
| Ladybug | 2024.2.1 | 3.2-8.7 |
| Koala 功能更新 | 2024.1.2 | 3.2-8.6 |
| Koala | 2024.1.1 | 3.2-8.5 |
| Jellyfish | 2023.3.1 | 3.2-8.4 |
| Iguana | 2023.2.1 | 3.2-8.3 |
| Hedgehog | 2023.1.1 | 3.2-8.2 |
| Giraffe | 2022.3.1 | 3.2-8.1 |
| Flamingo | 2022.2.1 | 3.2-8.0 |
特定 Android API 级别所要求的最低工具版本
Android Studio 和 AGP 需要满足最低版本要求才能支持特定 API 级别。
| API 级别 | 最低 Android Studio 版本 | 最低 AGP 版本 |
|---|---|---|
| Baklava 预览 | Meerkat | 2024.3.1 | 8.9.0 |
| 35 | Koala 功能更新 | 2024.2.1 | 8.6.0 |
| 34 | Hedgehog | 2023.1.1 | 8.1.1 |
| 33 | Flamingo | 2022.2.1 | 7.2 |
JDK版本与gradle版本对应关系
| Java版本 | 第一个支持的Gradle版本 |
|---|---|
| 18 | 7.5 |
| 17 | 7.3 |
| 16 | 7.0 |
| 15 | 6.7 |
| 14 | 6.3 |
| 13 | 6.0 |
| 12 | 5.4 |
| 11 | 5.0 |
| 10 | 4.7 |
| 9 | 4.3 |
| 8 | 2.1 |
