Room +找不到实现DB + DB_Impl不存在

13 android kotlin android-room

运行应用程序时出现以下错误

java.lang.RuntimeException: cannot find implementation for com.abc.db.abdDB. abcDB_Impl does not exist
Run Code Online (Sandbox Code Playgroud)

我的build.gradle有以下配置:

implementation "androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.0.0-alpha1"
implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"
Run Code Online (Sandbox Code Playgroud)

我的数据库类:

fun getDatabase(context: Context): abcDB? {
        if (dbInstance == null) {
            synchronized(abcDB::class.java) {
                if (dbInstance == null) {
                    dbInstance = Room.databaseBuilder(context.applicationContext,
                            abcDB::class.java, "abc_db")
                            .fallbackToDestructiveMigration()
                            .addCallback(sRoomDatabaseCallback)
                            .build()
                }
            }
        }
        return dbInstance
    }
Run Code Online (Sandbox Code Playgroud)

有没有人尝试使用androidX API?有人可以帮忙找到解决方案吗?

Epi*_*rce 29

如果您使用Kotlin,那么您必须使用kapt而不是annotationProcessor,并且还必须应用kotlin-kapt插件.

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

dependencies {
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1"
    kapt "androidx.lifecycle:lifecycle-compiler:2.0.0-alpha1"
    implementation "androidx.room:room-runtime:2.0.0-alpha1"
    kapt "androidx.room:room-compiler:2.0.0-alpha1"
Run Code Online (Sandbox Code Playgroud)

  • 谢谢-添加`kotlin-kapt`对我有用(我已经将`kapt`放在依赖项上了),但是奇怪的是构建过程不会标记没有插件来处理` kapt`陈述 (3认同)
  • 多谢兄弟!你拯救了我的一天! (3认同)