同一 Android 项目在命令行执行 ./gradlew assembleDebug 构建成功,但在 Android Studio 中同步时却报错:
kotlin
Unsupported class file major version 65
...
Could not open init generic class cache ... D:\tools\Java\jdk1.8.0_211\caches\8.0
原因分析
命令行构建通过 gradle.properties 中的 org.gradle.java.home 配置正确使用 JDK 17,而 Android Studio 默认使用系统环境变量或嵌入式 JDK,意外拾取了机器上残留的 JDK 8,导致版本不兼容。
解决方案
1. 固定 Gradle JDK 路径
在 gradle.properties 中明确指定:
bash
org.gradle.java.home=D:/tools/Java/jdk-17.0.2+8
2. 配置 Gradle Toolchain
在根 build.gradle 中声明:
kotlin
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}
3. 统一 IDE 设置
在 Android Studio 中:
- 打开
File > Settings > Build Tools > Gradle - 将 Gradle JDK 指向项目指定的 JDK 17 路径
- 确保
.idea/gradle.xml中配置正确并纳入版本控制
总结
命令行与 Android Studio 的构建差异主要源于环境配置不一致。通过将 JDK 版本信息写入项目配置文件,可以实现环境标准化,确保跨环境构建的一致性。核心原则是:配置即代码,环境也应该被托管。