1. ホーム

[解決済み】Android room persistent: AppDatabase_Impl が存在しない。

2022-04-10 05:47:53

質問

私のアプリのデータベースクラス

@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が存在しない、というエラーが表示されます。 私のアプリケーションクラスでは

public class APp extends Application {

    private boolean appRunning = false;

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

    }   

}

解決方法は?

で作業している人へ コトリン を変更してみてください。 annotationProcessorkapt アプリの中で 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 >Clean Projectを選択してください。その後、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"

UPDATE 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"