升级3年前Flutter项目遇JVM目标版本不兼容编译错误
解决Flutter项目编译时JVM目标版本不兼容问题
问题描述
升级3年未维护的Flutter项目时,遇到编译错误:
任务':carrier_info_v3:compileDebugKotlin'执行失败。
'compileDebugJavaWithJavac'任务(当前目标版本1.8)与'compileDebugKotlin'任务(当前目标版本17)的JVM目标兼容性需设置为相同Java版本。
核心原因是第三方依赖carrier_info_v3的Java编译目标版本仍为1.8,与主项目配置的Java 17不匹配。
解决方案
修改android/build.gradle,在全局子项目配置中强制统一所有Android模块(包括第三方插件)的JVM版本为17:
allprojects { repositories { google() mavenCentral() jcenter() } subprojects { afterEvaluate { project -> if (project.hasProperty('android')) { project.android { if (namespace == null) { namespace project.group } // 统一Java编译版本 compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } // 统一Kotlin JVM目标版本 kotlinOptions { jvmTarget = '17' } } } // 配置JVM Toolchain确保使用指定Java版本 if (project.plugins.hasPlugin('kotlin-android') || project.plugins.hasPlugin('kotlin')) { project.kotlin { jvmToolchain { languageVersion.set(JavaLanguageVersion.of(17)) } } } } } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { delete rootProject.buildDir }
操作步骤
- 将上述代码替换到你的
android/build.gradle文件中 - 执行以下命令清理缓存并重新编译:
flutter clean flutter pub get flutter run
该配置会强制所有子模块(包括carrier_info_v3)使用Java 17进行编译,彻底解决版本不兼容问题。
内容的提问来源于stack exchange,提问作者prabin maharjan
相关产品推荐
相关产品推荐

