Pour utiliser une implémentation de base de données différente avec Room, vous devez trouver (ou créer) un SupportSQLiteOpenHelper.Factory
implémentation et fournissez-la à votre RoomDatabase.Builder
via openHelperFactory()
:
val builder = Room.databaseBuilder(context, SomeDatabase.class, DB_NAME)
.openHelperFactory(factory)
.build()
La façon la plus simple de le faire est d'utiliser la bibliothèque SQLite autonome de Requery. Vous utiliseriez RequerySQLiteOpenHelperFactory
comme implémentation de SupportSQLiteOpenHelper.Factory
, et il utilisera la copie packagée de Requery de SQLite au lieu de celle du framework.
Si, pour une raison quelconque, vous ne souhaitez pas utiliser la bibliothèque de Requery, vous devrez trouver un équivalent que vous aimez, ou vous devrez implémenter le SupportSQLite*
API vous-même. Je l'ai fait deux fois pour SQLCipher pour Android, et c'est pénible, mais c'est certainement faisable.