在 Android 开发中,项目能否顺利编译、同步依赖,不仅取决于代码和依赖库,还高度依赖 四个核心版本体系:
- Android Studio (AS)
- Android Gradle Plugin (AGP)
- Gradle
- JDK (Java Development Kit)
如果这四者版本不匹配,你可能会遇到 Sync 失败、编译报错,甚至 IDE 异常崩溃。本文帮你理清这四者的对应关系和升级策略。
一、四者的角色与依赖关系
| 组件 | 作用 | 关键点 |
|---|---|---|
| Android Studio | IDE,提供编辑、调试、构建入口 | 决定可用的 AGP 版本 |
| AGP | Gradle 插件,告诉 Gradle 如何构建 Android | 决定 Gradle 版本范围和 JDK 版本要求 |
| Gradle | 构建工具本体 | 必须在 AGP 支持的版本范围内 |
| JDK | Java 开发环境 | AGP 7.x → JDK 11,AGP 8.x → JDK 17 |
核心原则:AS → AGP → Gradle → JDK
四者必须配套,否则构建必然报错。
下图可视化了四者之间的依赖顺序和推荐版本范围:

二、四者版本推荐对应表
| AS 版本 | AGP 推荐 | Gradle 推荐 | JDK 要求 |
|---|---|---|---|
| Electric Eel / Flamingo (2022.x) | 7.3 -- 7.4 | 7.4 -- 7.5 | 11 |
| Giraffe / Hedgehog (2023.1.x) | 8.1 | 8.0 -- 8.2 | 17 |
| Iguana (2023.2.x) | 8.2 | 8.1 -- 8.3 | 17 |
| Jellyfish (2023.3.x) | 8.3 | 8.2 -- 8.4 | 17 |
| Koala (2024.1.x) | 8.4 | 8.3 -- 8.6 | 17 |
| Ladybug (2024.2.x) | 8.6 | 8.5 -- 8.7 | 17 |
例如:AGP 7.4.2 对应 Gradle 7.5--7.6,推荐使用 Gradle 7.6;同时 JDK 需为 11。
三、AGP 版本的配置方式
1. 官方推荐方式(Plugins DSL)
项目根目录 build.gradle(.kts):
gradle
plugins {
id "com.android.application" version "8.3.2" apply false
id "com.android.library" version "8.3.2" apply false
}
子模块只需:
gradle
plugins {
id "com.android.application"
}
⚠️ 子模块不能重复写 version,否则多模块冲突。
2. Settings.gradle 配置(可选)
gradle
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
plugins {
id "com.android.application" version "8.3.2"
}
}
- 优点:统一管理,多模块项目更清晰
- 与 Plugins DSL 效果相同
3. 旧方式(不推荐)
gradle
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:7.4.2"
}
}
- 与 Gradle Plugin Portal 机制不一致
- AGP 8.x 官方已不推荐
- 仅用于老项目维护
四、升级策略
升级四角版本时,建议遵循 官方推荐顺序:
text
1. 升级 Android Studio
2. 升级 AGP
3. 升级 Gradle
4. 升级 JDK
常见坑点
| 场景 | 问题 |
|---|---|
| module 里重复写 AGP version | 多模块冲突 |
| Gradle 版本不在 AGP 支持范围 | Sync 报错 |
| JDK 与 Gradle/AGP 不匹配 | 编译失败 |
| AS 太老但用新 AGP | IDE 不支持 |
五、总结
- 四者配套,缺一不可:Android Studio、AGP、Gradle、JDK
- 升级顺序:AS → AGP → Gradle → JDK
- AGP 版本:Plugins DSL 是官方推荐方式,toml 文件只用于统一管理版本号
- 升级时注意:JDK 与 Gradle/AGP 版本匹配,避免构建失败
记住口诀:AS 决定 AGP,AGP 决定 Gradle,Gradle 配合 JDK,四者同一时代,构建不翻车。