Android 房间持久化:AppDatabase_Impl 不存在 [英] Android room persistent: AppDatabase_Impl does not exist

查看:90
本文介绍了Android 房间持久化:AppDatabase_Impl 不存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用数据库类

@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 库:

Gradle lib:

 compile "android.arch.persistence.room:runtime:+"   
 annotationProcessor "android.arch.persistence.room:compiler:+"

当我问例如它会给出这个错误时,AppDatabase_Impl 不存在在我的应用程序类中

And when i ask for instance it will give this error, AppDatabase_Impl does not exist in my application class

public class APp extends Application {

    private boolean appRunning = false;

    @Override
    public void onCreate() {
        super.onCreate();
        AppDatabase.getAppDatabase(this); //--AppDatabase_Impl does not exist

    }   

}

推荐答案

对于那些使用 Kotlin 的人,请尝试将 annotationProcessor 更改为 kapt应用程序 build.gradle

For those working with Kotlin, try changing annotationProcessor to kapt in the apps build.gradle

例如:

// 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)

to the top of the app level build.gradle file and do a clean and rebuild (according to https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6)

在 Android Studio 中,如果在粘贴代码时或构建过程中出现错误,请选择 Build > Clean Project.然后选择构建>重新构建项目,然后重新构建.

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


UPDATE

If you have migrated to 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"

这篇关于Android 房间持久化:AppDatabase_Impl 不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆