Flutter Android构建因JDK/compileOptions配置失败求助
第一个错误(配置Java 17后Release构建失败)
原因
Android 35(API 35)的core-for-system-modules.jar是基于JDK 21构建的系统模块,使用JDK 17的jlink工具处理该文件时会出现兼容性冲突。Debug模式下Android Gradle Plugin(AGP)会跳过部分JDK镜像生成逻辑,因此能正常构建,但Release模式会强制执行该步骤,最终导致失败。
解决方案
有两种可选方案:
方案1:版本匹配调整
要么将compileSdk降级到34(API 34),保持JDK 17的配置不变;要么升级本地JDK到21,同时修改build.gradle中的配置:compileOptions { sourceCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_21 } kotlinOptions { jvmTarget = JavaVersion.VERSION_21 }同时确保Android Studio的内置JBR(JRE)版本为21(可在
File > Project Structure > SDK Location > JDK location中设置)。方案2:禁用JDK镜像生成(适合保留compileSdk35+JDK17的场景)
在项目根目录的gradle.properties文件中添加以下配置,跳过AGP的Android JDK镜像生成步骤:android.disableAndroidJdkImage=true
第二个错误(移除配置后Fastlane构建失败)
原因
移除kotlinOptions配置后,Flutter会根据当前环境的JDK版本自动设置jvmTarget。你的Fastlane环境使用的是JDK 21,但项目依赖的Kotlin插件版本过低,不支持JVM Target 21,因此抛出错误。
解决方案
步骤1:明确指定JVM Target
不要移除build.gradle中的kotlinOptions配置,统一设置为环境支持的版本(比如17),避免自动匹配到21:kotlinOptions { jvmTarget = "17" }步骤2:升级Kotlin插件版本
在项目根目录的Project级build.gradle中,将Kotlin插件版本升级到支持JVM Target 21的版本(如1.9.0或更高):buildscript { ext.kotlin_version = "1.9.20" // ...其他配置 }步骤3:统一Fastlane环境的JDK版本
确保Fastlane执行环境使用的JDK版本与项目配置一致(比如JDK 17),可通过在Fastfile中指定JDK路径或设置环境变量JAVA_HOME来实现。
内容的提问来源于stack exchange,提问作者Jason Holt

