首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >6.1在Android4.4上发布JsonStore

6.1在Android4.4上发布JsonStore
EN

Stack Overflow用户
提问于 2013-12-10 09:50:40
回答 2查看 1.5K关注 0票数 1

我已经升级到Worklight 6.1 &我希望我在这里提到的问题能够得到解决,我的应用程序现在应该可以正常工作了。但在Android4.4中仍然面临着JSONStore初始化问题。请查看下面的日志。

代码语言:javascript
复制
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":{}}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-10 11:54:32

尝试如下:

  • 卸载应用程序(只是为了确保没有缓存)
  • 转到应用程序-描述符. the
  • 删除JSONStore可选特性
  • 构建
  • 确保将armeabi/libdatabase_sqlite.sox86/libdatabase_sqlcipher.sosqlcipher.jar从安卓环境下的native文件夹中删除。请参阅下面文件下的图片,您关心的是
  • 转到application-描述符.
  • 启用JSONStore可选特性
  • 构建
  • 确保armeabi/libdatabase_sqlite.sox86/libdatabase_sqlcipher.sosqlcipher.jar回来了。有关更多细节,请参阅FYI部分。
  • 在Eclipse上刷新原生Android项目。
  • 在模拟器或设备上运行。

FYI

我的机器(MacOSX10.9)上用于工作库的大小和MD5散列。大小由ls -al确定,MD5散列由md5 [file]生成。

sqlcipher.jar

代码语言:javascript
复制
Size: 103300 
MD5 Hash: 8d7f4d682994158096763c24e3d79fb2 

armeabi/libdatabase_sqlite.so

代码语言:javascript
复制
Size: 365644
MD5 Hash: 07c4cf69d038c3fdcc7dd0490841ea3d

x86/libdatabase_sqlcipher.so

代码语言:javascript
复制
Size: 367020
MD5 Hash: 38756d70d256f8e5982ed9789705457f

您所关心的文件:

还没工作吗?

  • 用v6.1创建一个新的Worklight项目(不适用于其他版本)。
  • 创建一个新的混合应用程序。
  • 创建一个Android环境。
  • 转到应用程序-描述符. the
  • 启用JSONStore。
  • 构建。
  • 确认JSONStore在那里工作。

下面是一个简单的例子:

代码语言:javascript
复制
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.sox86/libdatabase_sqlcipher.sosqlcipher.jar从在Androidv4.4中工作的新创建的项目复制到现有项目中。请确保在将本机项目发送到设备或模拟器之前,先构建、卸载应用程序的先前版本并刷新本机项目。
票数 3
EN

Stack Overflow用户

发布于 2014-04-25 11:39:25

我在运行一个过时的解放组织版本。使用2.2.2对我来说是4.4的工作。从这里下载

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20491060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档