För att använda en annan databasimplementering med Room måste du hitta (eller skapa) en SupportSQLiteOpenHelper.Factory
implementering och leverera den till din RoomDatabase.Builder
via openHelperFactory()
:
val builder = Room.databaseBuilder(context, SomeDatabase.class, DB_NAME)
.openHelperFactory(factory)
.build()
Det enklaste sättet att göra det är att använda Requerys fristående SQLite-bibliotek. Du skulle använda RequerySQLiteOpenHelperFactory
som implementeringen av SupportSQLiteOpenHelper.Factory
, och den kommer att använda Requerys paketerade kopia av SQLite istället för ramverk ett.
Om du av någon anledning inte vill använda Requerys bibliotek måste du hitta en motsvarighet som du gillar, eller så måste du implementera SupportSQLite*
API:er själv. Jag gjorde det två gånger för SQLCipher för Android, och det är jobbigt, men det är verkligen genomförbart.