使用Kotlin DSL构建脚本时无法为Room启用KSP的问题
解决方案:KSP与Room集成的版本兼容问题
问题根源
你遇到的Unable to load class 'org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData'错误,核心原因是KSP版本与项目使用的Kotlin版本不匹配。KSP对版本一致性要求严格,其版本号的前半段必须和项目中Kotlin插件的版本完全对齐。你的项目使用Kotlin 1.8.21,但KSP版本是1.8.10-1.0.9,版本不匹配导致类加载失败。
具体修复步骤
1. 更新KSP版本到匹配Kotlin 1.8.21的版本
修改libs.version.toml文件中的ksp版本号,替换为对应Kotlin 1.8.21的KSP版本:
[versions] # 其他版本保留不变 ksp = "1.8.21-1.0.11"
2. 清理项目级build.gradle.kts中的重复KSP插件配置
移除项目级文件中重复的KSP插件声明,只保留一种方式(推荐使用别名):
@Suppress("DSL_SCOPE_VIOLATION") plugins { alias(libs.plugins.androidApplication) apply false alias(libs.plugins.kotlinAndroid) apply false alias(libs.plugins.kspRoom) apply false // 移除下面这行重复的配置 // id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false }
3. 调整模块级build.gradle.kts的Room依赖配置
替换annotationProcessor为ksp,并移除原有的annotationProcessor(libs.androidx.room.compiler)依赖:
dependencies { // 其他依赖保留不变 // Room相关依赖调整 implementation(libs.androidx.room.runtime) // 移除这行 // annotationProcessor(libs.androidx.room.compiler) ksp(libs.androidx.room.compiler) // 启用这行 implementation(libs.androidx.room.ktx) implementation(libs.androidx.room.paging) }
4. 清理缓存并重新构建
- 在Android Studio中执行
File > Invalidate Caches... > Invalidate and Restart - 或在终端运行命令:
./gradlew clean build --refresh-dependencies
内容的提问来源于stack exchange,提问作者Vikram Baliga
相关产品推荐
相关产品推荐

