如何在KMM项目中设置Android JVM目标兼容性
解决KMM项目JVM版本不匹配警告的方案
问题根源
警告显示compileDebugJavaWithJavac(Java编译任务,目标版本1.8)与compileDebugKotlinAndroid(Kotlin编译任务,目标版本11)的JVM兼容性版本不一致。常规的KotlinCompile任务配置仅覆盖了Kotlin编译逻辑,未同步Java编译任务的版本,且KMM的shared模块需同时适配Android平台配置与Kotlin跨平台编译规则。
具体修复步骤
1. 针对shared模块的Android平台配置
在shared模块的build.gradle.kts中,同步Java与Kotlin的编译目标版本:
android { compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" } }
2. 配置Kotlin跨平台模块的JVM目标
若shared模块使用Kotlin Multiplatform插件,需在kotlin代码块中明确指定Android编译单元的JVM目标:
kotlin { android { compilations.all { kotlinOptions.jvmTarget = "11" } } // 其他平台(如iOS)的配置可保留原逻辑 }
3. 全局统一配置(可选)
若希望项目所有模块统一JVM版本,在根目录build.gradle.kts中添加全局规则:
subprojects { tasks.withType<JavaCompile> { sourceCompatibility = JavaVersion.VERSION_11.toString() targetCompatibility = JavaVersion.VERSION_11.toString() } tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions.jvmTarget = "11" } }
验证方式
执行命令./gradlew clean build,检查终端输出是否仍存在版本不匹配警告,确保所有Java与Kotlin编译任务的JVM目标均统一为11。
内容的提问来源于stack exchange,提问作者J. Hegg
相关产品推荐
相关产品推荐

