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

Gradle Catalogs环境下Room与KSP插件兼容配置报错

Gradle Version Catalogs集成Room组件时的类型转换异常问题

问题背景

在使用Gradle Version Catalogs特性的Android项目中集成Room组件,已知Room自2.3.0-beta02版本起官方支持该特性,但配置后编译时出现类型转换异常,无法正常构建。

当前配置内容

libs.versions.toml

[versions]
agp = "8.1.2"
// ...
androidx-room = "2.3.0-beta02"
com-google-devtools-ksp = "1.8.10-1.0.9"


[libraries]

# Implementations
core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "core-ktx" }
// ...
androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "androidx.room" }
androidx-room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "androidx.room" }
androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "androidx.room" }


[plugins]
com-android-application = { id = "com.android.application", version.ref = "agp" }
// ...
com-google-devtools-ksp = { id = "com.google.devtools.ksp", version.ref = "com-google-devtools-ksp" }


[bundles]

:app模块build.gradle.kts

@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
plugins {
    alias(libs.plugins.com.android.application)
    // ..
    alias(libs.plugins.com.google.devtools.ksp)
}

android {
    // ...
    defaultConfig {
        // ...
        minSdk = 24
        // noinspection EditedTargetSdkVersion
        targetSdk = 34
        versionCode = 1
        versionName = "1.0.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }

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

    kotlinOptions {
        jvmTarget = "1.8"
    }

    buildFeatures {
        viewBinding = true
    }
}

dependencies {
    implementation(libs.core.ktx)
    // ...
    implementation(libs.androidx.room.ktx)
    implementation(libs.androidx.room.runtime)
    ksp(libs.androidx.room.compiler)


    //    Test
    androidTestImplementation(libs.androidx.test.ext.junit)
    androidTestImplementation(libs.espresso.core)


    //    Test Android

    testImplementation(libs.junit)
    testImplementation(libs.io.insert.koin.test)
}

根目录build.gradle.kts

@Suppress("DSL_SCOPE_VIOLATION")
plugins {
    alias(libs.plugins.com.android.application) apply false
    /// ...
    alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize) apply false
}
true // Needed to make the Suppress annotation work for the plugins block

编译错误信息

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> class org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation_Decorated cannot be cast to class org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData (org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation_Decorated is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @6404c62a; org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @3df7681e)

(...)

* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.

(...)

org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
Caused by: java.lang.ClassCastException: class org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation_Decorated cannot be cast to class org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData (org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation_Decorated is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @6404c62a; org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @3df7681e)

(...)

同时收到的提示:

class org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation_Decorated cannot be cast to class org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData (org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation_Decorated is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @6404c62a; org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @3df7681e)
class org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation_Decorated cannot be cast to class org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData (org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation_Decorated is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @6404c62a; org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @3df7681e)

Gradle的依赖缓存可能已损坏(这种情况有时会在网络连接超时后发生。)

重新下载依赖并同步项目(需要网络)
Gradle构建进程(守护进程)的状态可能已损坏。停止所有Gradle守护进程可能会解决此问题。

停止Gradle构建进程(需要重启)
你的项目可能正在使用与项目中其他插件或项目要求的Gradle版本不兼容的第三方插件。

如果Gradle进程损坏,你也可以尝试关闭IDE,然后终止所有Java进程。

解决方案

这个类型转换异常的核心原因是KSP版本与AGP、Kotlin版本不匹配,同时Room 2.3.0-beta02属于较旧版本,与当前使用的AGP 8.1.2兼容性较差。

步骤1:升级Room到兼容AGP 8.x的版本

Room 2.3.0-beta02是2021年的版本,完全不支持AGP 8.x。建议升级到最新稳定版或至少支持AGP 7.x+的版本,修改libs.versions.toml:

[versions]
androidx-room = "2.6.1" # 最新稳定版,兼容AGP 8.x

步骤2:匹配KSP与Kotlin、AGP版本

KSP版本必须与项目使用的Kotlin版本严格对应。AGP 8.1.2对应的Kotlin版本应为1.8.22,调整libs.versions.toml:

[versions]
com-google-devtools-ksp = "1.8.22-1.0.11" # 对应Kotlin 1.8.22的KSP版本

同时确保项目中使用的Kotlin版本与AGP 8.1.2匹配(AGP 8.1.x要求Kotlin版本在1.8.0-1.8.22之间)。

步骤3:清理Gradle缓存并重启进程

  1. 执行./gradlew clean清理构建产物
  2. 删除项目根目录下的.gradle文件夹
  3. 停止所有Gradle守护进程:./gradlew --stop
  4. 重启Android Studio并重新同步项目

验证依赖配置

确保Room的依赖配置正确,使用KSP时保持现有依赖声明即可:

implementation(libs.androidx.room.ktx)
implementation(libs.androidx.room.runtime)
ksp(libs.androidx.room.compiler)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:52:03