Para usar uma implementação de banco de dados diferente com Room, você precisa encontrar (ou criar) um
SupportSQLiteOpenHelper.Factory
implementação e fornecê-lo ao seu RoomDatabase.Builder
via openHelperFactory()
:val builder = Room.databaseBuilder(context, SomeDatabase.class, DB_NAME)
.openHelperFactory(factory)
.build()
A maneira mais simples de fazer isso é usar a biblioteca SQLite autônoma do Requery. Você usaria
RequerySQLiteOpenHelperFactory
como a implementação do SupportSQLiteOpenHelper.Factory
, e usará a cópia empacotada do SQLite do Requery em vez da do framework. Se, por algum motivo, você não deseja usar a biblioteca do Requery, você precisa encontrar um equivalente que você goste, ou você precisa implementar o
SupportSQLite*
APIs você mesmo. Eu fiz isso duas vezes para SQLCipher para Android, e é uma dor, mas certamente é factível.