You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:20:29