When I have built this code, it showed build error:
DatabaseManager_Impl is not abstract and does not override abstract method clearAllTables() in RoomDatabase.
build.gradle:
implementation 'android.arch.persistence.room:runtime:1.0.0'
kapt 'android.arch.persistence.room:compiler:1.0.0'
implementation 'android.arch.persistence.room:rxjava2:1.0.0'
implementation 'android.arch.persistence.room:guava:1.1.0-beta3'
Database implementation as per Room guidance:
@Database(entities = {Task.class}, version = 1)
public abstract class DatabaseManager extends RoomDatabase {
private static final String DATABASE =
Iterables.getLast(Splitter.on(".").trimResults().split(BuildConfig.APPLICATION_ID)).concat("-db");
private static volatile DatabaseManager instance;
public abstract TaskDao taskDao();
synchronized public static DatabaseManager onInstance(Context context) {
if (instance == null) {
instance = newInstance(context, false);
}
return instance;
}
public static DatabaseManager newInstance(Context context, boolean memoryOnly) {
RoomDatabase.Builder<DatabaseManager> builder;
if (memoryOnly) {
builder = Room.inMemoryDatabaseBuilder(context.getApplicationContext(), DatabaseManager.class);
} else {
builder = Room.databaseBuilder(context.getApplicationContext(), DatabaseManager.class, DATABASE);
}
return builder.fallbackToDestructiveMigration().build();
}
}
The fix for me was to change all of room libraries versions to 1.0.0
Also make sure to use kapt
instead of annotationProccessor
!
I had the same issue and realized that
//room
implementation "android.arch.persistence.room:runtime:${arch_version}"
kapt "android.arch.persistence.room:compiler:${arch_version}"
implementation "android.arch.persistence.room:rxjava2:${arch_version}"
These dependencies should have the same version. Either they are all 1.0.0 or 1.1.0. Different versions will cause problems.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With