Android搭建Room数据库时kapt/ksp方法未找到依赖错误如何解决
问题原因
kapt、ksp都不是Gradle默认支持的依赖配置方法,需要引入对应插件才能使用:- 使用
kapt必须先引入kotlin-kapt插件 - 使用
ksp必须先引入KSP专属插件
- 使用
- 不需要同时添加kapt和ksp版本的
room-compiler依赖,二选一即可,同时添加会导致编译冲突 - 你当前模块级build.gradle的plugins块没有引入对应插件,因此Gradle识别不到
kapt()、ksp()方法,直接报错
解决方案
你可以根据自己的需求任选以下一种方案配置即可:
方案1:使用kapt(配置更简单,兼容性高)
- 先修改模块级build.gradle的plugins块,新增
kotlin-kapt插件引入:
plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions' // 新增这一行 id 'kotlin-kapt' }
- 删掉dependencies块里的ksp依赖行,kapt和ksp二选一即可,不要同时添加:
// 删掉这行代码 // ksp("androidx.room:room-compiler:$room_version")
- 同步Gradle即可解决报错。
方案2:使用KSP(编译速度比kapt快,需要额外配置)
- 先打开项目级build.gradle,在plugins块添加KSP插件版本声明,注意KSP版本必须和你项目使用的Kotlin版本完全匹配,示例如下:
plugins { id 'com.android.application' version '7.1.2' apply false id 'com.android.library' version '7.1.2' apply false id 'org.jetbrains.kotlin.android' version '1.5.31' apply false // 新增KSP插件声明,版本前缀和Kotlin版本保持一致 id 'com.google.devtools.ksp' version '1.5.31-1.0.0' apply false }
- 回到模块级build.gradle的plugins块,引入KSP插件:
plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions' // 新增这一行 id 'com.google.devtools.ksp' }
- 删掉dependencies块里的kapt依赖行:
// 删掉这行代码 // kapt("androidx.room:room-compiler:$room_version")
- 同步Gradle即可解决报错。
额外优化建议
- Kotlin项目不需要保留Java专用的
annotationProcessor "androidx.room:room-compiler:$room_version"依赖,可以直接删除,避免冗余 kotlin-android-extensions插件已经被官方弃用,建议后续替换为ViewBinding或DataBinding使用
内容的提问来源于stack exchange,提问作者auotive
相关产品推荐
相关产品推荐

