Gradle构建Android项目所需的JDK版本由AGP版本决定,而非compileSdkVersion或代码版本;截至2026年10月,AGP 8.5+及9.2均强制要求JDK 17(硬性下限),且Gradle运行时JDK与sourceCompatibility相互独立。

Gradle 构建 Android 项目需要的 JDK 版本,取决于你用的 AGP(Android Gradle Plugin)版本,而不是项目本身的 compileSdkVersion 或你写的 Java/Kotlin 代码版本。
看 AGP 版本决定 JDK 最低要求
AGP 官方强制规定了它能运行的最低 JDK 版本。2026 年起,所有主流 AGP 版本(AGP 8.5+ 及以上)都只支持 JDK 17,且不接受更低版本——哪怕你本地装了 JDK 11 或 JDK 8,Gradle daemon 启动时会直接报错,比如:
Could not determine java version from '11.0.22'.
常见组合(截至 2026 年 10 月):
-
AGP 8.5→ 要求Gradle 8.7+JDK 17 -
AGP 8.8→ 要求Gradle 8.10.2+JDK 17 -
AGP 9.2(2026 新版强制要求)→ 要求Gradle 8.13++JDK 17
注意:JDK 17 是硬性下限,不是“推荐”。用 JDK 21 通常也能跑,但需确认对应 Gradle 版本是否支持(例如 Gradle 8.13 支持到 JDK 21,不支持 JDK 22)。
Gradle 运行时 JDK 和项目 sourceCompatibility 是两回事
很多人混淆这两个概念,结果配错还查不出原因:
-
org.gradle.java.home或JAVA_HOME决定的是 Gradle 自己用哪个 JDK 启动 daemon 进程 —— 这个必须是JDK 17(或兼容版本) -
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 } }决定的是你写的 Java 代码能用什么语法、生成多老的字节码 —— 这个可以仍是1.8,哪怕 JDK 是 17
换句话说:工人(Gradle)必须用新工具(JDK 17),但你交给他加工的老零件(Java 8 字节码)他照样能处理。
Android Studio 内置 JBR 不等于 Gradle 使用的 JDK
Android Studio 2024+ 自带 JBR(JetBrains Runtime),它只用于运行 IDE 本身。Gradle 构建时完全不走这个路径 —— 即使你在 File > Project Structure > SDK Location 里看到 JBR 路径,那也只是 IDE 的显示逻辑。
真正生效的是:
- 命令行执行
./gradlew build时:看JAVA_HOME环境变量(或gradle.properties中的org.gradle.java.home) - 在 Android Studio 终端里点 “Run highlighted command”:走 IDE 设置里的
Gradle JDK(File > Settings > Build > Build Tools > Gradle > Gradle JDK) - 用 AS 界面按钮(如 Sync、Build):同样走 IDE 设置里的
Gradle JDK
所以最稳的做法是:把 JAVA_HOME 和 AS 的 Gradle JDK 都指向同一个 JDK 17 安装路径,避免来回切换出问题。
最容易被忽略的一点:老项目升级 AGP 后,gradle/wrapper/gradle-wrapper.properties 里的 distributionUrl 必须同步更新到匹配的 Gradle 版本,否则即使 JDK 是 17,也会卡在 “Minimum supported Gradle version is X.X” 报错上 —— 因为 AGP 根本没机会去检查 JDK。











