Gradle 找不到 KSP 插件,如何为 Room 正确配置?
结论
从给出的配置看,gradle/libs.versions.toml 的 [plugins] 中没有声明 KSP,根目录和 app 模块的 plugins 块也没有 KSP 插件别名。也就是说,目前贴出的配置没有注册或应用 KSP。需要先在版本目录中添加插件别名,再分别在根项目中注册、在 app 模块中应用。
错误中请求的插件版本是 2.0.21-1.0.1。如果项目使用 Kotlin 2.0.21,可以按这个版本值配置 KSP。如果项目使用其他 Kotlin 版本,应先确认对应的 KSP 版本,避免版本不匹配。
配置 KSP 插件
在 gradle/libs.versions.toml 的 [plugins] 段添加 KSP 插件条目:
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version = "2.0.21-1.0.1" }
在根目录的 build.gradle.kts 中注册插件,但不在根项目应用:
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.ksp) apply false
}
然后在 app/build.gradle.kts 中应用 KSP:
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.ksp)
}
如果根目录原文件确实如问题中所示,把两个 alias(...) apply false 写在同一行且中间没有换行或分隔符,也需要改成上面的独立语句。
检查插件仓库
gradlePluginPortal() 应配置在 settings.gradle.kts 的 pluginManagement.repositories 中,例如:
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
如果 KSP 已正确声明并应用,但仍然报相同错误,再检查 settings.gradle.kts 中的仓库配置、插件版本拼写,以及 Gradle 是否能够访问这些仓库。问题中提到其他依赖可以下载,但这本身不能证明插件仓库解析正常。
添加 Room 依赖
应用 KSP 插件后,Room compiler 应通过 ksp(...) 添加。仅添加运行时依赖还不够。下面用占位符表示项目选定的 Room 版本,请替换为同一个实际版本:
dependencies {
implementation("androidx.room:room-runtime:<Room版本>")
implementation("androidx.room:room-ktx:<Room版本>")
ksp("androidx.room:room-compiler:<Room版本>")
}
如果使用版本目录,可以在 [versions] 和 [libraries] 中声明对应别名,再在模块依赖块中使用 ksp(libs.androidx.room.compiler)。KSP 插件需要先应用到 app 模块,ksp(...) 配置才能用于 Room compiler。
同步仍失败时
修改后重新同步项目。如果仍报 Plugin ... was not found,先确认报错中的版本与版本目录中的 KSP 版本一致,再检查 pluginManagement 中的插件仓库配置和网络访问。
根据目前给出的文件,首先需要补上 KSP 插件的声明和应用。现有信息不足以判断修正后是否还会遇到其他仓库或版本问题。
备注:内容仅供参考。
