Search code examples
javaandroidandroid-room

Android room persistent: AppDatabase_Impl does not exist


My app database 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 lib:

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

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

    }   

}

Solution

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

    for example:

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

    also remember to add this plugin

    apply plugin: 'kotlin-kapt'
    

    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)

    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.


    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"
    

    UPDATE 2 (since July 2021)

    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"
    

    UPDATE 3 (since October 2023)

    For those working with Kotlin and Android Room, consider using KSP (Kotlin Symbol Processing) instead of KAPT (Kotlin Annotation Processing Tool) for Room annotations. KSP is aprox 2x faster than KAPT, making your build process more efficient.

    ksp("androidx.room:room-compiler:$roomVersion")
    

    Don't forget to add ksp plugin

    id("com.google.devtools.ksp")
    

    For more details and the latest updates on using KSP, refer to the official Android documentation: *https://developer.android.com/build/migrate-to-ksp.