Flutter集成games_services包后Android模拟器运行失败:JVM兼容性不一致
Flutter使用games_services包编译错误:JVM目标版本不一致
错误信息
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':games_services:compileDebugKotlin'. > Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (1.8) and 'compileDebugKotlin' (17).
我的配置文件
android/build.gradle
buildscript { ext.kotlin_version = '1.9.23' repositories { google() mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.4.1' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' } } allprojects { repositories { google() mavenCentral() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { delete rootProject.buildDir }
android/app/build.gradle
plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" id 'com.google.gms.google-services' } //.... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } //...
settings.gradle
pluginManagement { def flutterSdkPath = { def properties = new Properties() file("local.properties").withInputStream { properties.load(it) } def flutterSdkPath = properties.getProperty("flutter.sdk") assert flutterSdkPath != null, "flutter.sdk not set in local.properties" return flutterSdkPath } settings.ext.flutterSdkPath = flutterSdkPath() includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") repositories { google() mavenCentral() gradlePluginPortal() } plugins { id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false } } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version '8.3.1' apply false } include ":app"
gradle.properties
org.gradle.jvmargs=-Xmx4G android.useAndroidX=true android.enableJetifier=true
gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
解决方法
错误原因是games_services模块的Kotlin编译JVM目标版本为17,而应用模块使用的是1.8,导致版本不一致。可通过以下两种方式解决:
方式一:统一所有子项目为JVM 1.8
修改android/build.gradle中的subprojects块,添加编译配置强制所有子项目使用JVM 1.8:
subprojects { project.evaluationDependsOn(':app') afterEvaluate { if (project.hasProperty('android')) { android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } } } } }
方式二:升级应用到JVM 17(推荐,适配新版本Kotlin)
- 修改
android/app/build.gradle中的编译配置:
compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' }
- 在
android/build.gradle的subprojects块中统一配置:
subprojects { project.evaluationDependsOn(':app') afterEvaluate { if (project.hasProperty('android')) { android { compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } } } } }
注意:升级到JVM 17需确保开发环境安装了JDK 17,当前使用的Gradle 8.4已支持JDK 17。
内容的提问来源于stack exchange,提问作者mafortis
相关产品推荐
相关产品推荐

