Android Kotlin Room: AppDatabase_Impl does not exist

更新日期: 2021-02-06 阅读次数: 8312 字数: 239 分类: Android

Android 4.1.2 测试 Android Room 的使用,在 coroutine 中调用 Room.databaseBuilder 时,报错

AppDatabase_Impl does not exist

Google 了半天没有头绪,这个报错也太抽象了。最后在参考了 Room 官方文档之后, 才发现是 gradle 的配置问题。

解决方法

修改 app gradle.build 的配置,增加 plugin kotlin-kapt,如下:

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
}

然后确认 room 相关的这三个依赖存在:

implementation 'androidx.room:room-runtime:2.2.5'
implementation "androidx.room:room-ktx:2.2.5"
kapt   'androidx.room:room-compiler:2.2.5'

错误的配置

我是看了官方 Room 的配置才发现配置的问题的。

https://developer.android.com/training/data-storage/room

之前报错的根源是,在代码中 import room 时,android studio 给我自动添加的 room 依赖。

而这段自动添加的依赖存在两处问题:

  • 没有 room-ktx 依赖。而 room-ktx 恰好是 Kotlin Extensions and Coroutines support for Room。
  • room-compiler 使用了 annotationProcessor 而不是 kapt,同时需要引入 kotlin-kapt plugin。

延伸

gradle.build 配置中 annotationProcessor 与 kapt 区别

tags: android room

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式