Android 房间持久:AppDatabase_Impl 不存在
Android room persistent: AppDatabase_Impl does not exist
我的应用数据库class
@Database(entities = {Detail.class}, version = Constant.DATABASE_VERSION)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public abstract FavoritesDao favoritesDao();
public static AppDatabase getAppDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, Constant.DATABASE).allowMainThreadQueries().build();
//Room.inMemoryDatabaseBuilder(context.getApplicationContext(),AppDatabase.class).allowMainThreadQueries().build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
}
Gradle 库:
compile "android.arch.persistence.room:runtime:+"
annotationProcessor "android.arch.persistence.room:compiler:+"
当我询问时它会给出这个错误,AppDatabase_Impl 不存在
在我的申请中 class
public class APp extends Application {
private boolean appRunning = false;
@Override
public void onCreate() {
super.onCreate();
AppDatabase.getAppDatabase(this); //--AppDatabase_Impl does not exist
}
}
使用以下 gradle link:
compile 'android.arch.persistence.room:runtime:1.0.0-alpha9'
annotationProcessor 'android.arch.persistence.room:compiler:1.0.0-alpha9'
您需要创建一个不同的单例 class 并像这样从那里获取 AppDatabase:
RoomDB.java
public class RoomDB {
private static RoomDB INSTANCE;
public static AppDatabase getInstance(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, Constant.DATABASE).allowMainThreadQueries().build();
//Room.inMemoryDatabaseBuilder(context.getApplicationContext(),AppDatabase.class).allowMainThreadQueries().build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
App.java
public class App extends Application {
private boolean appRunning = false;
@Override
public void onCreate() {
super.onCreate();
RoomDB.getInstance(this); //This will provide AppDatabase Instance
}
遇到这个问题是因为忘记了apt依赖
implementation "android.arch.lifecycle:extensions:$archLifecycleVersion"
implementation "android.arch.persistence.room:runtime:$archRoomVersion"
annotationProcessor "android.arch.lifecycle:compiler:$archLifecycleVersion"
annotationProcessor "android.arch.persistence.room:compiler:$archRoomVersion"
添加annotationProcessor后,重新构建,问题解决
这不仅仅是更新您的依赖项。确保您所有的 Room 依赖项都具有相同的版本。
implementation 'android.arch.persistence.room:rxjava2:1.1.0-alpha2'
implementation 'android.arch.persistence.room:runtime:1.1.0-alpha2'
annotationProcessor "android.arch.persistence.room:compiler:1.1.0-alpha2"
在上面的示例片段中,我所有的 Room 依赖项都具有相同的版本1.1.0-alpha2
对于那些使用 Kotlin 的人,请尝试在应用 build.gradle
中将 annotationProcessor
更改为 kapt
例如:
// Extensions = ViewModel + LiveData
implementation "android.arch.lifecycle:extensions:1.1.0"
kapt "android.arch.lifecycle:compiler:1.1.0"
// Room
implementation "android.arch.persistence.room:runtime:1.0.0"
kapt "android.arch.persistence.room:compiler:1.0.0"
也记得加这个插件
apply plugin: 'kotlin-kapt'
到应用级别 build.gradle 文件的顶部并进行清理和重建(根据 https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6)
In Android Studio, if you get errors when you paste code or during the build process, select Build >Clean Project. Then select Build > Rebuild Project, and then build again.
更新
如果你已经迁移到androidx
def room_version = "2.3.0" // check latest version from docs
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
更新 2(自 2021 年 7 月起)
def room_version = "2.3.0" // check latest version from docs
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
我错过时出现了这个错误
@Database(entity="{<model.class>})
确保上面注释中指定的实体模型指的是特定模型class,还要确保必要的注释:
@Entity(tableName = "<table_name>" ...)
定义正确,你会很好
只需使用
apply plugin: 'kotlin-kapt'
在应用程序中 build.gradle
并保持两者的依赖关系
annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
kapt "android.arch.persistence.room:compiler:$rootProject.roomVersion"
编辑
在较新的版本中不需要一次添加两个依赖项
刚开始用,希望有用。
kapt 'android.arch.persistence.room:compiler:1.1.1'
在我的例子中,我正在测试房间数据库的连接性,我已将测试 class 放在我在 AndroidTest 文件夹中创建的目录中。我已经把它移出了自定义目录,然后它运行得很好。
对于 Kotlin 开发者
使用这个:
implementation "android.arch.persistence.room:runtime:1.0.0"
kapt "android.arch.persistence.room:compiler:1.0.0"
并将apply plugin: 'kotlin-kapt'
添加到应用级别的顶部build.gradle
。
对于 Java 开发人员
implementation "android.arch.persistence.room:runtime:1.0.0"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
我遇到了问题,因为我忘记了@Dao
注释
@Dao
public interface SearchHistoryDao {
@Query("SELECT * FROM search_history")
List<SearchHistory> getAll();
@Insert
void insertAll(SearchHistory... histories);
@Delete()
void delete(SearchHistory history);
}
有同样的问题。实现了少数 classes 和界面,如 Android Studio 创建的新示例项目中官方所述:
https://developer.android.com/training/data-storage/room/
上面提到的所有解决方案都没有帮助,根据我的数据库 class 所需的 _Impl 文件不是由 Room 生成的。最后在终端中执行 gradle clean build 给了我导致解决方案的提示:
"warning: Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide room.schemaLocation
annotation processor argument OR set exportSchema to false."
我在数据库中添加了参数exportSchema = false class
@Database(entities = arrayOf(User::class), version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
然后就成功了,在generatedJava下的app模块中找到了这两个生成文件:
- AppDatabase_Impl
- UserDao_Impl
我不理解这种行为,因为据说该参数是可选的,请参阅
问题更多地与 gradle 构建中未包含的正确库有关。我遇到了类似的问题并添加了缺失的
testImplementation "android.arch.persistence.room:testing:$room_version
我也遇到了同样的现象
正在关注
implementation "android.arch.persistence.room:runtime:1.1.1"
添加会导致另一个构建错误,但会从日志中跟踪原因。
在我的例子中,SQL 实现中出现错误。
修复后,构建成功。
所以你可能想检查整个房间库的实现,而不是查看崩溃的本地文件。
确保在 build.gradle
中为房间添加正确的依赖项
ext {
roomVersion = '2.1.0-alpha06'
}
// Room components
implementation "androidx.room:room-runtime:$rootProject.roomVersion"
implementation "androidx.room:room-ktx:$rootProject.roomVersion"
kapt "androidx.room:room-compiler:$rootProject.roomVersion"
androidTestImplementation "androidx.room:room-testing:$rootProject.roomVersion"
顶部下方的一行-
apply plugin: 'kotlin-kapt'
这个问题很老了,但我今天偶然发现了这个问题,none 提供的答案对我有所帮助。最后我设法通过注意到 google documentation 实际上仍然被 Java 采用而不是默认情况下的 Kotlin 来解决它,实际上他们添加了一条我忽略的评论
For Kotlin use kapt instead of annotationProcessor
所以,而不是
annotationProcessor "androidx.room:room-compiler:$room_version"
如果您使用 Kotlin 进行开发,您应该使用:
kapt "androidx.room:room-compiler:$room_version"
如果你使用 kotlin 类 来实现数据库那么
使用
apply plugin: 'kotlin-kapt'
和
kapt "android.arch.persistence.room:compiler:1.1.1"
在您的 gradle 文件中,它将起作用。
更改我的 gradle 文件中的依赖关系并没有帮助我修复 error.I 在 class 中错过了这个数据库注释,其中初始化了 Room 数据库,这导致了这个问题.
@Database(entities = [UserModel::class], version = 1)
确保上面注释中指定的实体模型指的是特定模型class
对我来说,Android Studio 会在您包含任何与 Room 数据库相关的导入时立即自动更新依赖项。但是根据 https://developer.android.com/jetpack/androidx/releases/room#declaring_dependencies 你需要更新一些。这是我的代码库的样子:
AppDatabase.kt
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
@Database(entities = arrayOf(MyEntity::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun myDAO(): MyDAO
companion object {
@Volatile private var instance: AppDatabase? = null
private val LOCK = Any()
operator fun invoke(context: Context)= instance ?: synchronized(LOCK){
instance ?: buildDatabase(context).also { instance = it}
}
private fun buildDatabase(context: Context) = Room.databaseBuilder(context,
AppDatabase::class.java, "db-name.db")
.build()
}
}
更新 build.gradle 答案之一:
apply plugin: 'kotlin-kapt' // this goes with other declared plugin at top
dependencies { // add/update the following in dependencies section
implementation 'androidx.room:room-runtime:2.2.3'
// annotationProcessor 'androidx.room:room-compiler:2.2.3' // remove this and use the following
kapt "androidx.room:room-compiler:2.2.3"
}
同步 gradle,您应该可以开始了。
阅读此处示例:
Room Example
我只是使用正确的(我猜是)annotationProcessorFile 修复了这个错误,如下所示:
annotationProcessor "android.arch.persistence.room:compiler:<latest_version>"
此外,我在 Room 版本和 Lifecycle 版本中都升级到了 2.2.0。
一旦同步了 gradle,我就可以开始使用 Room。
所以,祝你好运!让代码与您同在!
在我的 kotlin 应用程序中,我刚刚在 build.gradle 文件的顶部添加了以下行:
apply plugin: 'kotlin-kapt'
依赖项部分中的以下行:
kapt "androidx.room:room-compiler:2.2.5"
希望它能解决您的问题。
不是在 OP 的情况下,但是当你错误地使用 implementation 而不是 annotationProcessor 时也会发生这种情况:
implementation "android.arch.persistence.room:compiler:x.x.x"
而不是这个:
annotationProcessor "android.arch.persistence.room:compiler:x.x.x"
对于 Kotlin 开发人员
如果你检查了Dao和Entity,也使用了Kapt,没有问题,我猜你的kotlin版本有问题,如果你使用的是kotlin 1.4及以上版本。
将 Room 更新到 link.
的最新版本
2.3.0-alpha03 解决了我的问题。
除了失踪
annotationProcessor "android.arch.persistence.room:compiler:x.x.x"
我还错过了在 class
中添加以下注释
@Entity(tableName = "mytablename")
为了防止有人犯和我一样的错误,请不要将您的数据库 class 称为“数据库”,否则您会遇到同样的错误。
如果您正在使用 kotlin
,请将 kotlin 注释处理器插件添加到应用级别 build.gradle
plugins {
id "org.jetbrains.kotlin.kapt"
}
同时删除 annotationProcessor
并将其替换为 kapt
- 而不是
dependencies {
def room_version = "2.3.0"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
}
- 使用
dependencies {
def room_version = "2.3.0"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
}
annotationProcessor
仅适用于 java 环境。 kapt
兼顾 java 和 kotlin。如果您的实现有问题,这些插件将在编译时显示它们。
同意以上回答
解决方法如下。将 annotationProcessor 更改为 kapt,如下所示
// annotationProcessor "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
上面的答案没有任何效果,我注意到当我使用房间版本2.3.0
或 2.4.2
时问题仍然存在。但是,2.5.0-alpha01
版本在我应用时效果很好。
build.gradle:app
def roomVersion = '2.5.0-alpha01'
implementation "androidx.room:room-ktx:$roomVersion"
kapt "androidx.room:room-compiler:$roomVersion"
testImplementation "android.arch.persistence.room:testing:$roomVersion"
我的应用数据库class
@Database(entities = {Detail.class}, version = Constant.DATABASE_VERSION)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public abstract FavoritesDao favoritesDao();
public static AppDatabase getAppDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, Constant.DATABASE).allowMainThreadQueries().build();
//Room.inMemoryDatabaseBuilder(context.getApplicationContext(),AppDatabase.class).allowMainThreadQueries().build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
}
Gradle 库:
compile "android.arch.persistence.room:runtime:+"
annotationProcessor "android.arch.persistence.room:compiler:+"
当我询问时它会给出这个错误,AppDatabase_Impl 不存在
在我的申请中 class
public class APp extends Application {
private boolean appRunning = false;
@Override
public void onCreate() {
super.onCreate();
AppDatabase.getAppDatabase(this); //--AppDatabase_Impl does not exist
}
}
使用以下 gradle link:
compile 'android.arch.persistence.room:runtime:1.0.0-alpha9'
annotationProcessor 'android.arch.persistence.room:compiler:1.0.0-alpha9'
您需要创建一个不同的单例 class 并像这样从那里获取 AppDatabase:
RoomDB.java
public class RoomDB {
private static RoomDB INSTANCE;
public static AppDatabase getInstance(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, Constant.DATABASE).allowMainThreadQueries().build();
//Room.inMemoryDatabaseBuilder(context.getApplicationContext(),AppDatabase.class).allowMainThreadQueries().build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
App.java
public class App extends Application {
private boolean appRunning = false;
@Override
public void onCreate() {
super.onCreate();
RoomDB.getInstance(this); //This will provide AppDatabase Instance
}
遇到这个问题是因为忘记了apt依赖
implementation "android.arch.lifecycle:extensions:$archLifecycleVersion"
implementation "android.arch.persistence.room:runtime:$archRoomVersion"
annotationProcessor "android.arch.lifecycle:compiler:$archLifecycleVersion"
annotationProcessor "android.arch.persistence.room:compiler:$archRoomVersion"
添加annotationProcessor后,重新构建,问题解决
这不仅仅是更新您的依赖项。确保您所有的 Room 依赖项都具有相同的版本。
implementation 'android.arch.persistence.room:rxjava2:1.1.0-alpha2'
implementation 'android.arch.persistence.room:runtime:1.1.0-alpha2'
annotationProcessor "android.arch.persistence.room:compiler:1.1.0-alpha2"
在上面的示例片段中,我所有的 Room 依赖项都具有相同的版本1.1.0-alpha2
对于那些使用 Kotlin 的人,请尝试在应用 build.gradle
annotationProcessor
更改为 kapt
例如:
// Extensions = ViewModel + LiveData
implementation "android.arch.lifecycle:extensions:1.1.0"
kapt "android.arch.lifecycle:compiler:1.1.0"
// Room
implementation "android.arch.persistence.room:runtime:1.0.0"
kapt "android.arch.persistence.room:compiler:1.0.0"
也记得加这个插件
apply plugin: 'kotlin-kapt'
到应用级别 build.gradle 文件的顶部并进行清理和重建(根据 https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6)
In Android Studio, if you get errors when you paste code or during the build process, select Build >Clean Project. Then select Build > Rebuild Project, and then build again.
更新
如果你已经迁移到androidx
def room_version = "2.3.0" // check latest version from docs
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
更新 2(自 2021 年 7 月起)
def room_version = "2.3.0" // check latest version from docs
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
我错过时出现了这个错误
@Database(entity="{<model.class>})
确保上面注释中指定的实体模型指的是特定模型class,还要确保必要的注释:
@Entity(tableName = "<table_name>" ...)
定义正确,你会很好
只需使用
apply plugin: 'kotlin-kapt'
在应用程序中 build.gradle
并保持两者的依赖关系
annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
kapt "android.arch.persistence.room:compiler:$rootProject.roomVersion"
编辑
在较新的版本中不需要一次添加两个依赖项 刚开始用,希望有用。
kapt 'android.arch.persistence.room:compiler:1.1.1'
在我的例子中,我正在测试房间数据库的连接性,我已将测试 class 放在我在 AndroidTest 文件夹中创建的目录中。我已经把它移出了自定义目录,然后它运行得很好。
对于 Kotlin 开发者
使用这个:
implementation "android.arch.persistence.room:runtime:1.0.0"
kapt "android.arch.persistence.room:compiler:1.0.0"
并将apply plugin: 'kotlin-kapt'
添加到应用级别的顶部build.gradle
。
对于 Java 开发人员
implementation "android.arch.persistence.room:runtime:1.0.0"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
我遇到了问题,因为我忘记了@Dao
注释
@Dao
public interface SearchHistoryDao {
@Query("SELECT * FROM search_history")
List<SearchHistory> getAll();
@Insert
void insertAll(SearchHistory... histories);
@Delete()
void delete(SearchHistory history);
}
有同样的问题。实现了少数 classes 和界面,如 Android Studio 创建的新示例项目中官方所述: https://developer.android.com/training/data-storage/room/
上面提到的所有解决方案都没有帮助,根据我的数据库 class 所需的 _Impl 文件不是由 Room 生成的。最后在终端中执行 gradle clean build 给了我导致解决方案的提示:
"warning: Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide room.schemaLocation
annotation processor argument OR set exportSchema to false."
我在数据库中添加了参数exportSchema = false class
@Database(entities = arrayOf(User::class), version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
然后就成功了,在generatedJava下的app模块中找到了这两个生成文件:
- AppDatabase_Impl
- UserDao_Impl
我不理解这种行为,因为据说该参数是可选的,请参阅
问题更多地与 gradle 构建中未包含的正确库有关。我遇到了类似的问题并添加了缺失的
testImplementation "android.arch.persistence.room:testing:$room_version
我也遇到了同样的现象
正在关注
implementation "android.arch.persistence.room:runtime:1.1.1"
添加会导致另一个构建错误,但会从日志中跟踪原因。
在我的例子中,SQL 实现中出现错误。 修复后,构建成功。
所以你可能想检查整个房间库的实现,而不是查看崩溃的本地文件。
确保在 build.gradle
中为房间添加正确的依赖项ext {
roomVersion = '2.1.0-alpha06'
}
// Room components
implementation "androidx.room:room-runtime:$rootProject.roomVersion"
implementation "androidx.room:room-ktx:$rootProject.roomVersion"
kapt "androidx.room:room-compiler:$rootProject.roomVersion"
androidTestImplementation "androidx.room:room-testing:$rootProject.roomVersion"
顶部下方的一行-
apply plugin: 'kotlin-kapt'
这个问题很老了,但我今天偶然发现了这个问题,none 提供的答案对我有所帮助。最后我设法通过注意到 google documentation 实际上仍然被 Java 采用而不是默认情况下的 Kotlin 来解决它,实际上他们添加了一条我忽略的评论
For Kotlin use kapt instead of annotationProcessor
所以,而不是
annotationProcessor "androidx.room:room-compiler:$room_version"
如果您使用 Kotlin 进行开发,您应该使用:
kapt "androidx.room:room-compiler:$room_version"
如果你使用 kotlin 类 来实现数据库那么 使用
apply plugin: 'kotlin-kapt'
和
kapt "android.arch.persistence.room:compiler:1.1.1"
在您的 gradle 文件中,它将起作用。
更改我的 gradle 文件中的依赖关系并没有帮助我修复 error.I 在 class 中错过了这个数据库注释,其中初始化了 Room 数据库,这导致了这个问题.
@Database(entities = [UserModel::class], version = 1)
确保上面注释中指定的实体模型指的是特定模型class
对我来说,Android Studio 会在您包含任何与 Room 数据库相关的导入时立即自动更新依赖项。但是根据 https://developer.android.com/jetpack/androidx/releases/room#declaring_dependencies 你需要更新一些。这是我的代码库的样子:
AppDatabase.kt
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
@Database(entities = arrayOf(MyEntity::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun myDAO(): MyDAO
companion object {
@Volatile private var instance: AppDatabase? = null
private val LOCK = Any()
operator fun invoke(context: Context)= instance ?: synchronized(LOCK){
instance ?: buildDatabase(context).also { instance = it}
}
private fun buildDatabase(context: Context) = Room.databaseBuilder(context,
AppDatabase::class.java, "db-name.db")
.build()
}
}
更新 build.gradle 答案之一:
apply plugin: 'kotlin-kapt' // this goes with other declared plugin at top
dependencies { // add/update the following in dependencies section
implementation 'androidx.room:room-runtime:2.2.3'
// annotationProcessor 'androidx.room:room-compiler:2.2.3' // remove this and use the following
kapt "androidx.room:room-compiler:2.2.3"
}
同步 gradle,您应该可以开始了。
阅读此处示例: Room Example
我只是使用正确的(我猜是)annotationProcessorFile 修复了这个错误,如下所示:
annotationProcessor "android.arch.persistence.room:compiler:<latest_version>"
此外,我在 Room 版本和 Lifecycle 版本中都升级到了 2.2.0。
一旦同步了 gradle,我就可以开始使用 Room。
所以,祝你好运!让代码与您同在!
在我的 kotlin 应用程序中,我刚刚在 build.gradle 文件的顶部添加了以下行:
apply plugin: 'kotlin-kapt'
依赖项部分中的以下行:
kapt "androidx.room:room-compiler:2.2.5"
希望它能解决您的问题。
不是在 OP 的情况下,但是当你错误地使用 implementation 而不是 annotationProcessor 时也会发生这种情况:
implementation "android.arch.persistence.room:compiler:x.x.x"
而不是这个:
annotationProcessor "android.arch.persistence.room:compiler:x.x.x"
对于 Kotlin 开发人员
如果你检查了Dao和Entity,也使用了Kapt,没有问题,我猜你的kotlin版本有问题,如果你使用的是kotlin 1.4及以上版本。 将 Room 更新到 link.
的最新版本2.3.0-alpha03 解决了我的问题。
除了失踪
annotationProcessor "android.arch.persistence.room:compiler:x.x.x"
我还错过了在 class
中添加以下注释@Entity(tableName = "mytablename")
为了防止有人犯和我一样的错误,请不要将您的数据库 class 称为“数据库”,否则您会遇到同样的错误。
如果您正在使用 kotlin
,请将 kotlin 注释处理器插件添加到应用级别 build.gradle
plugins {
id "org.jetbrains.kotlin.kapt"
}
同时删除 annotationProcessor
并将其替换为 kapt
- 而不是
dependencies {
def room_version = "2.3.0"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
}
- 使用
dependencies {
def room_version = "2.3.0"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
}
annotationProcessor
仅适用于 java 环境。 kapt
兼顾 java 和 kotlin。如果您的实现有问题,这些插件将在编译时显示它们。
同意以上回答
解决方法如下。将 annotationProcessor 更改为 kapt,如下所示
// annotationProcessor "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
上面的答案没有任何效果,我注意到当我使用房间版本2.3.0
或 2.4.2
时问题仍然存在。但是,2.5.0-alpha01
版本在我应用时效果很好。
build.gradle:app
def roomVersion = '2.5.0-alpha01'
implementation "androidx.room:room-ktx:$roomVersion"
kapt "androidx.room:room-compiler:$roomVersion"
testImplementation "android.arch.persistence.room:testing:$roomVersion"