SQLCipher 3.5.5 Compatibility Bug

This sample app from my book uses 3.5.4, and it works fine.

If I update it to 3.5.5, the app crashes on:

  • Motorola Moto E XT1022 (Android 4.4, Build.CPU_ABI is armeabi-v7a, Build.CPU_ABI2 is armeabi)
  • Android 4.4 SDK emulator (x86)
  • Android 4.3 SDK emulator (x86)

The stack trace is:

Process: com.commonsware.android.sqlcipher, PID: 11125
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "signal" referenced by "libsqlcipher.so"...
   at java.lang.Runtime.loadLibrary(Runtime.java:364)
   at java.lang.System.loadLibrary(System.java:526)
   at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:195)
   at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:188)
   at com.commonsware.android.sqlcipher.DatabaseHelper.<init>(DatabaseHelper.java:36)
   at com.commonsware.android.sqlcipher.ConstantsFragment.onViewCreated(ConstantsFragment.java:62)
   at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904)
   at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
   at android.app.BackStackRecord.run(BackStackRecord.java:684)
   at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
   at android.app.Activity.performStart(Activity.java:5257)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2171)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
   at android.app.ActivityThread.access$800(ActivityThread.java:139)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:136)
   at android.app.ActivityThread.main(ActivityThread.java:5086)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
   at dalvik.system.NativeStart.main(Native Method)

The problem does not occur on Android 5.0+ in my testing.

If you need me to try some other scenarios, please let me know. This problem was pointed out by one of my readers, so the problem is not limited to my development environment, FWIW.

Thanks!

Hi @commonsguy

Thank you for your report, we are investigating this further.

Hi @commonsguy

We have just released SQLCipher for Android 3.5.6 which should address the issue you are experiencing. When you get the opportunity, would you give it a try and let us know your results? The AAR should be available on Maven Central shortly. Thanks!

I can confirm that the fix works on all three environments that I originally tested on. Many thanks!

BTW, was this the right place to report this issue? Or should I have used some issue tracker somewhere (e.g., GitHub)?

Hi @commonsguy

Excellent, we are glad to hear everything is working well for you! Thank you for your quick response.

Regarding where to submit an issue, either discuss (here), or creating a Github issue is fine, we monitor both.

Take care!