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 区别
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式