最近在使用Room时,发现在用Kotlin写项目时,配置Room需要ksp, 于是写这篇笔记,方便参考。
(1)首先配置项目级别build.gradle.kts
plugins {
// 项目级别的build.gradle.kts中配置
id("com.google.devtools.ksp") version "2.1.0-1.0.29" apply false
}
在项目级别配置,会告诉Android Studio这个项目可能要使用这个插件依赖,apply false的意思是,声明项目可能会使用这个插件,让构建工具准备好, 但是不马上应用。具体什么时候应用此插件在模块级别(app)的 build.gradle.kts 中配置。
(2)在模块级别(app)的 build.gradle.kts 中配置插件
plugins{
// 在模块(app)级别build.gradle.kts中配置
id("com.google.devtools.ksp")
}
(3) 添加Room依赖
dependencies {
val room_version = "2.6.1"
implementation("androidx.room:room-runtime:$room_version")
ksp("androidx.room:room-compiler:$room_version")
// 下面是可选项,请根据项目实际需求添加
// 可选,Kotlin 扩展和协程支持
implementation("androidx.room:room-ktx:$room_version")
// 可选, RxJava2 支持
implementation("androidx.room:room-rxjava2:$room_version")
// 可选, RxJava3 支持
implementation("androidx.room:room-rxjava3:$room_version")
// 可选,Guava 支持
implementation("androidx.room:room-guava:$room_version")
// 可选,Room测试帮助
testImplementation("androidx.room:room-testing:$room_version")
// 可选,Paging3 集成
implementation("androidx.room:room-paging:$room_version")
}
(4)运行Gradle Sync,以配置项目
Kapt(Kotlin Annotation Processing Tool,Kotlin 注解处理工具)允许你在 Kotlin 代码中使用 Java 注解处理器,即使这些处理器没有专门支持 Kotlin。它通过从 Kotlin 文件生成 Java 存根来实现,注解处理器可以读取这些存根。这个存根生成过程开销较大,会显著影响构建速度。
KSP(Kotlin Symbol Processing,Kotlin 符号处理)是 Kapt 的 Kotlin 优化替代品。KSP 直接分析 Kotlin 代码,处理速度比 Kapt 快最多 2 倍。同时,KSP 对 Kotlin 语言的特性有更好的理解。
迁移Kapt至Ksp请参考文末官方指南
安卓官方数据持久化Room指南
Room 最新版本可以在这查看
Ksp最新版本查看
迁移kapt至ksp 官方指南