Kotlin 测试 Android Room 的使用,在 coroutine 中调用 Room.databaseBuilder 时,报错:
AppDatabase_Impl does not exist
查看了developer 文档,就是按照文档配置的,深思后发现developer文档有问题
dependencies {
val room_version = "2.4.3"
implementation("androidx.room:room-runtime:$room_version")
annotationProcessor("androidx.room:room-compiler:$room_version")
// To use Kotlin annotation processing tool (kapt)
kapt("androidx.room:room-compiler:$room_version")
// To use Kotlin Symbol Processing (KSP)
ksp("androidx.room:room-compiler:$room_version")
// optional - Kotlin Extensions and Coroutines support for Room
implementation("androidx.room:room-ktx:$room_version")
// optional - RxJava2 support for Room
implementation("androidx.room:room-rxjava2:$room_version")
// optional - RxJava3 support for Room
implementation("androidx.room:room-rxjava3:$room_version")
// optional - Guava support for Room, including Optional and ListenableFuture
implementation("androidx.room:room-guava:$room_version")
// optional - Test helpers
testImplementation("androidx.room:room-testing:$room_version")
// optional - Paging 3 Integration
implementation("androidx.room:room-paging:2.5.0-alpha03")
}
以上的developer文档给出的,但是在添加依赖的时候有一个依赖是:
kapt("androidx.room:room-compiler:$room_version")
所以问题就出在这里,有kapt的依赖,但是没有kapt的plugin
最后的解决方案:
修改 app gradle.build 的配置,增加 plugin kotlin-kapt,如下:
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
}
然后确认 room 相关的这三个依赖dependencies:
implementation("androidx.room:room-runtime:2.4.3")
annotationProcessor("androidx.room:room-compiler:2.4.3")
kapt("androidx.room:room-compiler:2.4.3")