客户端开发

Flutter 构建 Android 报 Java major version 65 不兼容的处理

Android Studio 升级内置 JBR 21 后,旧版 Gradle 项目报 Unsupported class file major version 65 的两种处理方式。

更新 Android Studio 后构建原有的 Flutter Android 项目时,Gradle 阶段可能直接报错 Unsupported class file major version 65。

字节码主版本号 65 对应 Java 21。新版 Android Studio 内置的 JBR(JetBrains Runtime)升级至 JDK 21 后,Flutter 默认复用该运行时启动 Gradle,而旧项目 gradle-wrapper.properties 中锁定的 Gradle 版本(如 7.x 或早期 8.x)尚不支持运行在 Java 21 上。

方案一:为 Flutter 单独绑定 JDK 17(维护旧项目优先)

如果只是维护既有项目、不希望改动构建脚本或引入第三方插件兼容问题,在本地安装 JDK 17(如 Adoptium Temurin 17)后,无需改动系统全局 JAVA_HOME,直接通过 flutter config 指定 JDK 目录:

flutter config --jdk-dir "<JDK-17-安装路径>"

执行 flutter doctor -v 核对 Android toolchain 下的 Java binary at 已指向 JDK 17 后,重新运行项目即可。

方案二:升级项目的 Gradle 与 AGP 版本

如果是新项目或计划统一升级工具链,可将 Gradle 升级至兼容 Java 21 的版本(Gradle 8.5 及以上):

  1. 修改 android/gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip
  1. 同步更新 android/settings.gradle(旧模板位于 android/build.gradle)中的 Android Gradle Plugin 与 Kotlin 插件版本。
  2. 清理缓存并验证构建:
flutter clean
flutter pub get
flutter build apk

需要注意:跨大版本升级至 AGP 8.x 往往会连带暴露旧版第三方插件缺少 namespace 声明或 compileSdk 偏低等问题,升级前建议先保持 Git 工作区干净以便回退。