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

Jetpack Compose集成Room遇依赖错误:JVM目标版本不兼容

Room+KSP集成时JVM版本不兼容的解决办法

问题根源

KSP生成的Room代码目标JVM版本是17,但你的Java编译任务仍在使用1.8,版本不匹配导致构建冲突。

最优解决方案:统一全项目JVM目标版本

Jetpack Compose官方推荐使用JVM 17及以上,直接把Kotlin、Java编译和KSP的目标版本统一为17即可,具体配置如下:

1. 项目根目录build.gradle.kts

添加全局Kotlin编译配置:

plugins {
    id("com.android.application") version "xxxx" apply false
    id("org.jetbrains.kotlin.android") version "xxxx" apply false
    id("com.google.devtools.ksp") version "xxxx" apply false
}

subprojects {
    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
        kotlinOptions {
            jvmTarget = "17"
        }
    }
}

2. 模块级(如app)build.gradle.kts

补充Java编译版本配置,同时确保Room与KSP版本兼容:

android {
    compileSdk = 34
    defaultConfig {
        minSdk = 21
        targetSdk = 34
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = "17"
    }
}

dependencies {
    // Room依赖(版本需和KSP匹配,比如Room 2.6.1对应KSP 1.9.20-1.0.15)
    implementation("androidx.room:room-runtime:2.6.1")
    implementation("androidx.room:room-ktx:2.6.1")
    ksp("androidx.room:room-compiler:2.6.1")
}

3. 清理并同步项目

执行File -> Sync Project with Gradle Files,然后运行./gradlew clean build彻底清理构建缓存并重新编译。

备选方案:改用KAPT替代KSP

如果暂时不想升级JVM版本(不推荐,Compose后续会逐步淘汰低版本支持),可以切换到KAPT编译Room:

  1. 替换插件:移除KSP插件,添加KAPT插件到模块级build.gradle.kts顶部:
plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
    id("kotlin-kapt") // 替换原KSP插件
}
  1. 替换编译依赖:把ksp依赖换成kapt:
dependencies {
    implementation("androidx.room:room-runtime:2.6.1")
    implementation("androidx.room:room-ktx:2.6.1")
    kapt("androidx.room:room-compiler:2.6.1") // 替换ksp为kapt
}

注意:KAPT编译速度远慢于KSP,仅作为临时过渡方案。

内容的提问来源于stack exchange,提问作者kasimaru13

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:35:24