ปัญหา IBM Worklight 6.1 JsonStore บน Android 4.4

ฉันได้อัปเกรดเป็น Worklight 6.1 แล้ว และฉันคาดหวังว่าปัญหาที่ฉันกล่าวถึงที่นี่ ปัญหา IBM Worklight Android 4.4, JSON Store หยุดทำงาน จะได้รับการแก้ไขและแอปของฉันควรจะทำงานได้ดีในขณะนี้ แต่ยังคงประสบปัญหาการเริ่มต้น JSONStore ใน Android 4.4 กรุณาตรวจสอบบันทึกด้านล่าง

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":{}}

person Steve    schedule 10.12.2013    source แหล่งที่มา


คำตอบ (2)


ลองทำสิ่งต่อไปนี้:

  • ถอนการติดตั้งแอปพลิเคชัน (เพียงเพื่อให้แน่ใจว่าไม่มีอะไรถูกแคชไว้)
  • ไปที่ application-descriptor.xml
  • ลบคุณลักษณะเสริมของ JSONStore
  • สร้าง
  • ตรวจสอบให้แน่ใจว่า armeabi/libdatabase_sqlite.so, x86/libdatabase_sqlcipher.so และ sqlcipher.jar ถูกลบออกจากโฟลเดอร์ native ภายใต้สภาพแวดล้อม Android ของคุณ ดูภาพด้านล่างภายใต้ไฟล์ที่คุณสนใจ
  • ไปที่ application-descriptor.xml
  • เปิดใช้งานคุณลักษณะเสริมของ JSONStore
  • สร้าง
  • ตรวจสอบให้แน่ใจว่า armeabi/libdatabase_sqlite.so, x86/libdatabase_sqlcipher.so และ sqlcipher.jar กลับมาแล้ว ดูรายละเอียดเพิ่มเติมที่ส่วนแจ้งเพื่อทราบ
  • รีเฟรชโปรเจ็กต์ Android ดั้งเดิมบน Eclipse
  • ทำงานบนโปรแกรมจำลองหรืออุปกรณ์

แจ้งเพื่อทราบ

ขนาดและแฮช MD5 บนเครื่องของฉัน (Mac OSX 10.9) สำหรับไลบรารีที่ใช้งานได้ ขนาดถูกกำหนดด้วย ls -al และแฮช MD5 ถูกสร้างขึ้นด้วย md5 [file]

sqlcipher.jar

Size: 103300 
MD5 Hash: 8d7f4d682994158096763c24e3d79fb2 

อาร์มีบี/libdatabase_sqlite.so

Size: 365644
MD5 Hash: 07c4cf69d038c3fdcc7dd0490841ea3d

x86/libdatabase_sqlcipher.so

Size: 367020
MD5 Hash: 38756d70d256f8e5982ed9789705457f

ไฟล์ที่คุณสนใจ:

ไฟล์

ยังไม่ทำงานใช่ไหม

  • สร้างโปรเจ็กต์ Worklight ใหม่ด้วยเวอร์ชัน 6.1 (ใช้กับเวอร์ชันอื่นไม่ได้)
  • สร้างแอปพลิเคชันไฮบริดใหม่
  • สร้างสภาพแวดล้อม Android
  • ไปที่ application-descriptor.xml
  • เปิดใช้งาน JSONStore
  • สร้าง.
  • ยืนยันว่า JSONStore ใช้งานได้ที่นั่น

นี่เป็นตัวอย่างสั้นๆ:

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 และ sqlcipher.jar จากโปรเจ็กต์ที่สร้างขึ้นใหม่ซึ่งใช้งานได้กับ Android v4.4 ไปยังโปรเจ็กต์ที่คุณมีอยู่ ตรวจสอบให้แน่ใจว่าคุณสร้าง ถอนการติดตั้งแอปเวอร์ชันก่อนหน้า และรีเฟรชโปรเจ็กต์ดั้งเดิมก่อนที่จะส่งไปยังอุปกรณ์หรือโปรแกรมจำลอง
person cnandreu    schedule 10.12.2013
comment
ฉันเพิ่งลองใช้วิธีนี้ แต่ก็ไม่ประสบความสำเร็จ ข้อยกเว้นเดียวกันกำลังมา - person Steve; 10.12.2013

ฉันใช้ lib เวอร์ชันล้าสมัยอยู่ การใช้ 2.2.2 ใช้ได้กับ 4.4 สำหรับฉัน ดาวน์โหลดได้จากที่นี่

person Muaz Ishfaq    schedule 25.04.2014