Flutter编译报错:compileDebugJava与compileDebugKotlin JVM目标版本不一致
解决
:flutter_logs:compileDebugKotlin任务失败的JVM版本兼容性问题 问题根源
仅在android/app/build.gradle中配置JVM版本无法覆盖第三方依赖flutter_logs的模块配置,该模块默认使用JVM 17编译,与你的App模块指定的1.8版本冲突。
可行解决方案
方案1:全局统一所有模块的JVM版本
在项目根目录的build.gradle文件中添加全局配置,强制所有模块(包括第三方依赖)使用JVM 1.8:
allprojects { repositories { // 保留原有仓库配置 } // 统一Kotlin编译的JVM目标 tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = '1.8' } } // 统一Java编译的版本兼容性 tasks.withType(JavaCompile).configureEach { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } }
方案2:单独为flutter_logs模块配置JVM版本
如果不想全局修改,可在android/app/build.gradle中单独指定该依赖模块的编译版本:
project(':flutter_logs') { tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = '1.8' } } tasks.withType(JavaCompile).configureEach { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } }
方案3:升级项目JVM版本到17(长期推荐)
若项目环境允许,直接将App模块的JVM版本升级至17,与flutter_logs保持一致:
在android/app/build.gradle中修改配置:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } }
收尾操作
执行以下命令清理缓存并重新编译:
flutter clean flutter run
内容的提问来源于stack exchange,提问作者Anand Parameswaran
相关产品推荐
相关产品推荐

