I have upgraded to Worklight 6.1 & I was with expectation that the issue I mentioned here IBM Worklight Android 4.4 issue, JSON Store stopped working would be resolved and my app should work fine now. But still facing the JSONStore initialization issue in Android 4.4. Please check below log.
12-10 14:58:30.630: D/dalvikvm(14826): No JNI_OnLoad found in /data/app-lib/com.Test-2/libsqlcipher_android.so 0x41e371b0, skipping init
12-10 14:58:30.630: D/dalvikvm(14826): Trying to load lib /data/app-lib/com.Test-2/libdatabase_sqlcipher.so 0x41e371b0
12-10 14:58:30.630: W/linker(14826): libdatabase_sqlcipher.so has text relocations. This is wasting memory and is a security risk. Please fix.
12-10 14:58:30.630: E/dalvikvm(14826): dlopen("/data/app-lib/com.Test-2/libdatabase_sqlcipher.so") failed: dlopen failed: cannot locate symbol "_ZN7android10MemoryBaseC1ERKNS_2spINS_11IMemoryHeapEEElj" referenced by "libdatabase_sqlcipher.so"...
12-10 14:58:30.640: E/jsonstore-core(14826): Error during provision
12-10 14:58:30.640: E/jsonstore-core(14826): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZN7android10MemoryBaseC1ERKNS_2spINS_11IMemoryHeapEEElj" referenced by "libdatabase_sqlcipher.so"...
12-10 14:58:30.640: E/jsonstore-core(14826): at java.lang.Runtime.loadLibrary(Runtime.java:364)
12-10 14:58:30.640: E/jsonstore-core(14826): at java.lang.System.loadLibrary(System.java:526)
12-10 14:58:30.640: E/jsonstore-core(14826): at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:144)
12-10 14:58:30.640: E/jsonstore-core(14826): at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:137)
12-10 14:58:30.640: E/jsonstore-core(14826): at com.worklight.androidgap.jsonstore.database.DatabaseManager.openDatabaseIfNecessary(DatabaseManager.java:173)
12-10 14:58:30.640: E/jsonstore-core(14826): at com.worklight.androidgap.jsonstore.database.DatabaseManager.checkDatabaseAgainstSchema(DatabaseManager.java:87)
12-10 14:58:30.640: E/jsonstore-core(14826): at com.worklight.androidgap.plugin.storage.ProvisionActionDispatcher.isSchemaMismatched(ProvisionActionDispatcher.java:155)
12-10 14:58:30.640: E/jsonstore-core(14826): at com.worklight.androidgap.plugin.storage.ProvisionActionDispatcher.dispatch(ProvisionActionDispatcher.java:293)
12-10 14:58:30.640: E/jsonstore-core(14826): at com.worklight.androidgap.plugin.storage.BaseActionDispatcher.dispatch(BaseActionDispatcher.java:87)
12-10 14:58:30.640: E/jsonstore-core(14826): at com.worklight.androidgap.plugin.storage.DispatchingPlugin$ActionDispatcherRunnable.run(DispatchingPlugin.java:113)
12-10 14:58:30.640: E/jsonstore-core(14826): at com.worklight.androidgap.plugin.storage.DispatchingPlugin$SerialExecutor$1.run(DispatchingPlugin.java:147)
12-10 14:58:30.640: E/jsonstore-core(14826): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
12-10 14:58:30.640: E/jsonstore-core(14826): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
12-10 14:58:30.640: E/jsonstore-core(14826): at java.lang.Thread.run(Thread.java:841)
12-10 14:58:30.650: E/Test(14826): init notification error:----->{
12-10 14:58:30.650: E/Test(14826): "src": "initCollection",
12-10 14:58:30.650: E/Test(14826): "err": -1,
12-10 14:58:30.650: E/Test(14826): "msg": "PERSISTENT_STORE_FAILURE",
12-10 14:58:30.650: E/Test(14826): "col": "Notification",
12-10 14:58:30.650: E/Test(14826): "usr": "TestUser",
12-10 14:58:30.650: E/Test(14826): "doc": {},
12-10 14:58:30.650: E/Test(14826): "res": {}
12-10 14:58:30.650: E/Test(14826): }
12-10 14:58:30.660: E/Test(14826): [wl.jsonstore] {"src":"initCollection","err":-1,"msg":"PERSISTENT_STORE_FAILURE","col":"Notification","usr":"TestUser","doc":{},"res":{}}
Try the following:
armeabi/libdatabase_sqlite.so
,x86/libdatabase_sqlcipher.so
andsqlcipher.jar
are removed from thenative
folder under your Android environment. See the picture below under Files you care about.armeabi/libdatabase_sqlite.so
,x86/libdatabase_sqlcipher.so
andsqlcipher.jar
are back. Look at the FYI section for more details.FYI
The size and MD5 hashes on my machine (Mac OSX 10.9) for the working libraries. Size was determined with
ls -al
and the MD5 hash was generated withmd5 [file]
.sqlcipher.jar
armeabi/libdatabase_sqlite.so
x86/libdatabase_sqlcipher.so
The files you care about:
Still not working?
Here's a quick example:
armeabi/libdatabase_sqlite.so
,x86/libdatabase_sqlcipher.so
andsqlcipher.jar
from that newly created project that works in Android v4.4 to your existing project. Make sure you build, uninstall a previous version of the app and refresh the native project before you send it to the device or emulator.