SQLCipher for Android Refresh (Beta)

We are happy to announce the beta availability of a new SQLCipher for Android client library. This new library provides major benefits including optimized support for concurrent database access, drastic performance improvements, API simplification, and codebase modernization. Please read more about this here:

More information is needed on how to build this new library using OpenSSL 3.0 and the FIPS provider module. (ie build flags, config files, loading of the FIPS provider, calling validation tests, etc.).

Hi, any timelines for publishing SQLCypher for Android Refresh Community editions as stated in the linked announcement? Thanks.

Hi @Alain_El_Hakim

We don’t have a time frame yet, however, it will likely align with a public SQLCipher core release in the future. Please keep an eye on the Discuss site, we’ll create a post as soon as it is available.

Hi @developernotes , appreciate your prompt response. If I am correct, the Android Refresh library is already available in the commercial version (in Beta), where could I read more about the commercial licensing? Thanks.

Hi @Alain_El_Hakim

That is correct, Commercial licenses of SQLCipher for Android may be purchased here.

That’s great, we are dealing with the following exception causing our app to crash (we are actually on the community release version), and it is giving us hard time to reproduce. Can you suggest a way how we can verify that new library resolves that issue. Or maybe if you could help to pinpoint the root cause.

Fatal Exception: java.util.concurrent.TimeoutException: net.sqlcipher.database.SQLiteCompiledSql.finalize() timed out after 10 seconds
at net.sqlcipher.database.SQLiteCompiledSql.native_finalize(SQLiteCompiledSql.java)
at net.sqlcipher.database.SQLiteCompiledSql.releaseSqlStatement(SQLiteCompiledSql.java:103)
at net.sqlcipher.database.SQLiteCompiledSql.finalize(SQLiteCompiledSql.java:141)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:209)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:192)
at java.lang.Thread.run(Thread.java:818)

We really appreciate your help.


Hi @Alain_El_Hakim

What version of SQLCipher for Android are you using? We removed the locking around the finalizer last year. If you aren’t running the latest (currently 4.5.1), you might consider upgrading. Also, you can try calling setLockingEnabled(false) on your connection once opened.