As of 3.0.0-beta2+, DBFlow now supports SQLCipher fairly easily.

To add the library add the library to your build.gradle with same version you are using with the rest of the library.

dependencies {
  implementation "com.dbflow5:sqlcipher:${version}"
  implementation "net.zetetic:android-database-sqlcipher:${sqlcipher_version}"

You also need to add the Proguard rule:

-keep class net.sqlcipher.** { *; }
-dontwarn net.sqlcipher.**

Next, you need to subclass the provided SQLCipherOpenHelper (taken from test files):

class SQLCipherOpenHelperImpl(context: Context,
                              databaseDefinition: DBFlowDatabase,
                              callback: DatabaseCallback?)
    : SQLCipherOpenHelper(context, databaseDefinition, callback) {
    override val cipherSecret get() = "dbflow-rules"

Note: that the constructor with DatabaseDefinition and DatabaseHelperListener is required.

Then in your application class when initializing DBFlow:

      DatabaseConfig.Builder(CipherDatabase::class) { db, callback -> SQLCipherHelperImpl(context, databaseDefinition, callback))

And that's it. You're all set to start using SQLCipher!

Last updated