Flutter构建报错:Java与Kotlin JVM目标版本不兼容,升级至17遇阻
解决Flutter项目JVM目标版本不兼容问题
为什么修改android/app/build.gradle无效?
- 你安装的第三方Flutter插件可能在项目级
android/build.gradle中定义了全局JVM目标配置,或是插件自身的gradle脚本强制覆盖了app模块的设置,导致你在app/build.gradle里的修改被忽略。 - Flutter默认会从项目根目录的
gradle.properties读取全局JVM参数,如果这里的配置和app/build.gradle冲突,会优先使用全局配置,也会造成局部修改无效。
需要调整的文件及操作步骤
1. 全局配置文件:gradle.properties
在项目根目录的gradle.properties中添加/修改以下参数,强制统一JVM目标版本为17:
org.gradle.java.home=/你的JDK17安装路径 # 替换为实际路径,比如Windows下的C:\Program Files\Java\jdk-17,Mac下的/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home android.compileOptions.sourceCompatibility=17 android.compileOptions.targetCompatibility=17 kotlin.jvmTarget=17
2. 项目级android/build.gradle
在buildscript块的ext属性中统一配置版本参数,并全局设置Kotlin编译的JVM目标:
buildscript { ext { kotlin_version = '1.9.0' // 需使用支持JDK17的Kotlin版本,建议选适配的高版本 compileSdkVersion = 34 minSdkVersion = 21 targetSdkVersion = 34 javaVersion = JavaVersion.VERSION_17 } // 其他原有配置... } allprojects { repositories { google() mavenCentral() } // 全局统一Kotlin编译的JVM目标 tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = "17" } } }
3. 模块级android/app/build.gradle
在android块下明确指定Java编译选项,并同步Kotlin配置:
android { compileSdkVersion rootProject.ext.compileSdkVersion compileOptions { sourceCompatibility rootProject.ext.javaVersion targetCompatibility rootProject.ext.javaVersion } kotlinOptions { jvmTarget = rootProject.ext.javaVersion.toString() } // 其他原有配置... }
4. 清理缓存并重建
执行以下操作确保配置生效:
- 点击Android Studio工具栏的
File > Invalidate Caches...,勾选Invalidate and Restart重启IDE。 - 在终端运行命令:
flutter clean && flutter pub get && flutter build apk(按需替换为你需要的构建命令)
额外注意点
- 检查你安装的第三方插件的gradle配置,部分插件可能硬编码了JVM目标版本,这种情况下需要查看插件文档确认是否有适配JDK17的版本,或联系作者更新。
- 确认Android Studio的项目SDK已切换到JDK17:
File > Project Structure > Project Settings > Project,将SDK Location中的JDK路径设置为JDK17的安装目录。
内容的提问来源于stack exchange,提问作者Juli2813
相关产品推荐
相关产品推荐

