2013-12-10 2 views
1

Я обновился до Worklight 6.1 & Я был с уверенностью, что проблема, о которой я упоминал здесь IBM Worklight Android 4.4 issue, JSON Store stopped working, будет решена, и теперь мое приложение должно работать нормально. Но все еще сталкивается с проблемой инициализации JSONStore в Android 4.4. Пожалуйста, проверьте ниже журнал.IBM Worklight 6.1 Проблема 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":{}} 

ответ

3

Попробуйте следующее:

  • Удаление приложения (просто чтобы убедиться, что ничего не кэшируются)
  • Перейти к заявке-descriptor.xml
  • Снимите JSONStore опционально функции
  • Построение
  • Удостоверьтесь, что armeabi/libdatabase_sqlite.so, x86/libdatabase_sqlcipher.so и sqlcipher.jar удалены из папки native в вашей среде Android. Смотрите изображение ниже под Файлы, которые вас волнуют.
  • Перейти к прикладному descriptor.xml
  • Включения дополнительной функции JSONStore
  • Построить
  • Убедитесь armeabi/libdatabase_sqlite.so, x86/libdatabase_sqlcipher.so и sqlcipher.jar вернулись. Посмотрите на раздел FYI для более подробной информации.
  • Обновите собственный проект Android на Eclipse.
  • Запуск на эмуляторе или устройстве.

FYI

Размер и MD5-хэшей на моей машине (Mac OSX 10.9) для рабочих библиотек. Размер был определен с помощью ls -al, а хэш MD5 был создан с 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 

файлы вы заботитесь о:

Files

Все еще не работает?

  • Создайте новый проект Worklight с v6.1 (не будет работать с другими версиями).
  • Создайте новое гибридное приложение.
  • Создайте среду Android.
  • Перейти к приложению-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 к существующему проекту. Убедитесь, что вы создали, удалите предыдущую версию приложения и обновите собственный проект, прежде чем отправлять его на устройство или эмулятор.
+0

Я только что пробовал этот подход, но безуспешно. Такое же исключение приходит. – Steve

+0

Я обновил свой ответ, попробую и дайте мне знать. – cnandreu

1

Я использую устаревшую версию lib. Использование 2.2.2 работает на 4.4 для меня. Скачать с here

Смежные вопросы