[英]IBM Worklight 6.1 JsonStore issue on Android 4.4
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. 我已经升级到Worklight 6.1&我期待我在这里提到的IBM Worklight Android 4.4问题,JSON Store停止工作的问题将得到解决,我的应用程序现在应该正常工作。 But still facing the JSONStore initialization issue in Android 4.4.
但仍面临Android 4.4中的JSONStore初始化问题。 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
and sqlcipher.jar
are removed from the native
folder under your Android environment. native
文件夹中删除armeabi/libdatabase_sqlite.so
, x86/libdatabase_sqlcipher.so
和sqlcipher.jar
。 See the picture below under Files you care about . armeabi/libdatabase_sqlite.so
, x86/libdatabase_sqlcipher.so
and sqlcipher.jar
are back. armeabi/libdatabase_sqlite.so
, x86/libdatabase_sqlcipher.so
和sqlcipher.jar
返回。 Look at the FYI section for more details. FYI FYI
The size and MD5 hashes on my machine (Mac OSX 10.9) for the working libraries. 我的机器(Mac OSX 10.9)上的工作库的大小和MD5哈希值。 Size was determined with
ls -al
and the MD5 hash was generated with md5 [file]
. 使用
ls -al
确定大小,并使用md5 [file]
生成MD5哈希。
sqlcipher.jar sqlcipher.jar
Size: 103300
MD5 Hash: 8d7f4d682994158096763c24e3d79fb2
armeabi/libdatabase_sqlite.so armeabi / libdatabase_sqlite.so
Size: 365644
MD5 Hash: 07c4cf69d038c3fdcc7dd0490841ea3d
x86/libdatabase_sqlcipher.so 86 / libdatabase_sqlcipher.so
Size: 367020
MD5 Hash: 38756d70d256f8e5982ed9789705457f
The files you care about: 你关心的文件:
Still not working? 还是行不通?
Here's a quick example: 这是一个简单的例子:
var collections = {
customers : {
searchFields : {
'CUSTOMERCODE' : 'string'
}
}
};
WL.JSONStore.init(collections)
.then(function () {
return WL.JSONStore.get('customers').add({'CUSTOMERCODE' : '456'});
})
.then(function () {
return WL.JSONStore.get('customers').findAll();
})
.then(function (res) {
alert(JSON.stringify(res));
})
.fail(function (err) {
alert(err.toString());
});
});
armeabi/libdatabase_sqlite.so
, x86/libdatabase_sqlcipher.so
and sqlcipher.jar
from that newly created project that works in Android v4.4 to your existing project. armeabi/libdatabase_sqlite.so
, x86/libdatabase_sqlcipher.so
和sqlcipher.jar
从Android sqlcipher.jar
中新创建的项目复制到现有项目。 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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.