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;
    }
}

摇篮库:

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

例如,当我询问时会出现此错误,AppDatabase_Impl 在我的应用程序类中不存在

public class APp extends Application {

    private boolean appRunning = false;

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

    }

}

原文由 pratik deshai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 610
2 个回答

对于那些使用 Kotlin 的人,请尝试在应用程序中将 --- annotationProcessor 更改为 kapt 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

在 Android Studio 中,如果您在粘贴代码时或在构建过程中遇到错误,请选择“构建”>“清理项目”。然后选择 Build > Rebuild Project,然后再次构建。


更新

如果你已经迁移到 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"

原文由 RWIL 发布,翻译遵循 CC BY-SA 4.0 许可协议

只需使用

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'

原文由 Jahangir Kabir 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题