Masalah IBM Worklight 6.1 JSONStore di Android 4.4

Saya telah meningkatkan ke Worklight 6.1 & saya berharap masalah yang saya sebutkan di sini Masalah IBM Worklight Android 4.4, JSON Store berhenti berfungsi akan terselesaikan dan aplikasi saya seharusnya berfungsi dengan baik sekarang. Namun masih menghadapi masalah inisialisasi JSONStore di Android 4.4. Silakan periksa log di bawah ini.

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 sumber


Jawaban (2)


Cobalah yang berikut ini:

  • Copot pemasangan aplikasi (hanya untuk memastikan tidak ada yang di-cache)
  • Buka application-descriptor.xml
  • Hapus fitur opsional JSONStore
  • Membangun
  • Pastikan armeabi/libdatabase_sqlite.so, x86/libdatabase_sqlcipher.so dan sqlcipher.jar dihapus dari folder native di lingkungan Android Anda. Lihat gambar di bawah pada File yang penting bagi Anda.
  • Buka application-deskriptor.xml
  • Aktifkan fitur opsional JSONStore
  • Membangun
  • Pastikan armeabi/libdatabase_sqlite.so, x86/libdatabase_sqlcipher.so dan sqlcipher.jar kembali. Lihat bagian FYI untuk detail lebih lanjut.
  • Segarkan proyek Android asli di Eclipse.
  • Jalankan di emulator atau perangkat.

Untuk diketahui

Ukuran dan hash MD5 di mesin saya (Mac OSX 10.9) untuk perpustakaan yang berfungsi. Ukuran ditentukan dengan ls -al dan hash MD5 dihasilkan dengan md5 [file].

sqlcipher.jar

Size: 103300 
MD5 Hash: 8d7f4d682994158096763c24e3d79fb2 

armeabi/libdatabase_sqlite.so

Size: 365644
MD5 Hash: 07c4cf69d038c3fdcc7dd0490841ea3d

x86/libdatabase_sqlcipher.so

Size: 367020
MD5 Hash: 38756d70d256f8e5982ed9789705457f

File yang Anda pedulikan:

File

Masih tidak berfungsi?

  • Buat Proyek Worklight baru dengan v6.1 (tidak akan berfungsi dengan versi lain).
  • Buat Aplikasi Hibrid baru.
  • Buat lingkungan Android.
  • Buka application-descriptor.xml
  • Aktifkan JSONStore.
  • Membangun.
  • Konfirmasikan JSONStore berfungsi di sana.

Berikut ini contoh singkatnya:

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());
  });
});
  • Salin armeabi/libdatabase_sqlite.so, x86/libdatabase_sqlcipher.so dan sqlcipher.jar dari proyek yang baru dibuat yang berfungsi di Android v4.4 ke proyek Anda yang sudah ada. Pastikan Anda membuat, meng-uninstal aplikasi versi sebelumnya, dan menyegarkan proyek asli sebelum mengirimkannya ke perangkat atau emulator.
person cnandreu    schedule 10.12.2013
comment
Saya baru saja mencoba pendekatan ini, tetapi tidak berhasil. Pengecualian yang sama juga akan terjadi. - person Steve; 10.12.2013

Saya menjalankan versi lib yang sudah ketinggalan zaman. Menggunakan 2.2.2 berfungsi pada 4.4 untuk saya. Unduh dari di sini

person Muaz Ishfaq    schedule 25.04.2014