Android 打包报错 25.0.3

17 阅读1分钟

android 项目编译的时候 报错* What went wrong: 25.0.3

排查半天发现根因是 Gradle 用了 JDK 25,而项目需要 JDK 21。

核心坑

Android Studio 里设置的 Gradle JDK,只对 IDE 内部构建生效。命令行跑 flutter build / gradlew,用的是 shell 环境变量 JAVA_HOME 或 GRADLE_LOCAL_JAVA_HOME。

所以在 AS 里把 Gradle JDK 切到 21,终端打包照样用 25。

还有一个特别误导人的点:java -version 显示的是 25,让人以为没设对。其实 java 命令从 PATH 找 java.exe,根本不看 JAVA_HOME。就算设对了,java -version 可能还是 25,这很正常。

解决(Windows)

临时切到 JDK 21:

set "GRADLE\\\_LOCAL\\\_JAVA\\\_HOME=C:\Users\Administrator\\\\.jdks\jbr-21.0.11"

cd android

gradlew --stop

cd ..

flutter build apk --debug

GRADLE_LOCAL_JAVA_HOME 是 Gradle 专用变量,优先级最高。

永久生效(setx 后要重开终端):

setx JAVA\\\_HOME "C:\Users\Administrator\\\\.jdks\jbr-21.0.11"

setx GRADLE\\\_LOCAL\\\_JAVA\\\_HOME "C:\Users\Administrator\\\\.jdks\jbr-21.0.11"

钉死在项目里(对命令行最强制,任何终端都绕不过):

\\# gradle.properties

org.gradle.java.home=C:/Users/Administrator/.jdks/jbr-21.0.11

反直觉的三点

  1. AS 里的 Gradle JDK 设置,管不到命令行打包。

  2. java -version 看的是 PATH,跟 JAVA_HOME 没关系。

  3. 命令行里一条命令一行,别把多条 set 写一行,会被当成一个变量值白设。

遇到裸版本号报错别猜,直接跑 gradlew :app:assembleDebug --stacktrace 定位。