【问题标题】:Room + cannot find implementation DB + DB_Impl does not existRoom + 找不到实现 DB + DB_Impl 不存在
【发布时间】:2018-10-31 09:41:40
【问题描述】:

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

java.lang.RuntimeException: cannot find implementation for com.abc.db.abdDB. abcDB_Impl does not exist

我的 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"

我的数据库类:

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
    }

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

【问题讨论】:

标签: android kotlin android-room


【解决方案1】:

如果你使用 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"

【讨论】:

  • 谢谢 - 添加 kotlin-kapt 对我有用(我已经将 kapt 放在依赖项上),但是构建过程不会标记没有处理kapt 语句的插件
  • 谢谢兄弟!你拯救了我的一天!
【解决方案2】:

Java

在应用程序 build.gradle 中

使用

implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'

【讨论】:

  • 此信息非常陈旧且过时。
  • @Bink 既然你没有费心提出改进建议,我可以为你做。你应该做的是使用以下而不是上面的:implementation "androidx.room:room-runtime:$room_version"annotationProcessor "androidx.room:room-compiler:$room_version"$room_version 取决于 Google 发布的最新版本
猜你喜欢
  • 1970-01-01
  • 2020-02-02
  • 2017-05-15
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 2018-09-29
  • 1970-01-01
  • 2018-10-17
相关资源
最近更新 更多