Per utilizzare un'implementazione di database diversa con Room, devi trovare (o creare) un SupportSQLiteOpenHelper.Factory
implementazione e forniscilo al tuo RoomDatabase.Builder
tramite openHelperFactory()
:
val builder = Room.databaseBuilder(context, SomeDatabase.class, DB_NAME)
.openHelperFactory(factory)
.build()
Il modo più semplice per farlo è utilizzare la libreria SQLite autonoma di Requery. Dovresti usare RequerySQLiteOpenHelperFactory
come implementazione di SupportSQLiteOpenHelper.Factory
, e utilizzerà la copia del pacchetto di SQLite di Requery invece di quella del framework.
Se, per qualche motivo, non desideri utilizzare la libreria di Requery, dovresti trovare un equivalente che ti piace, oppure dovresti implementare il SupportSQLite*
API tu stesso. L'ho fatto due volte per SQLCipher per Android ed è una seccatura, ma è certamente fattibile.