【问题标题】:JSONStore Initialisation failure with error: -11 msg: OPERATION_FAILED_ON_SPECIFIC_DOCUMENTJSONStore 初始化失败并出现错误:-11 消息:OPERATION_FAILED_ON_SPECIFIC_DOCUMENT
【发布时间】:2017-07-02 00:23:22
【问题描述】:

我们目前正在使用 MobileFirst Foundation 8.0(20170131) 开发一个 Cordova 应用程序,该应用程序可以在 x86 架构 Android 设备和 AVD 上完美运行。但是当谈到像 Note 5 和 Google Pixel 这样的 64 位架构设备时,我们在初始化 JSONStore API 时看到下面的错误消息,它说资产/功能库中的 libcrypto.so.zip 文件是 32 位的64位。

Android Studio(v2.2.3) 中的错误:

    02-11 13:18:43.136 9317-10425/com.mobiInspect E/JSONSTORE: JSONStoreLogger.logError in JSONStoreLogger.java:192 :: error while dispatching action "provision"
                                                           java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.mobiInspect/no_backup/libcrypto.so.1.0.0" is 32-bit instead of 64-bit
                                                               at java.lang.Runtime.load0(Runtime.java:908)
                                                               at java.lang.System.load(System.java:1505)
                                                               at com.worklight.jsonstore.util.JSONStoreUtil.loadLib(JSONStoreUtil.java:264)
                                                               at com.worklight.jsonstore.api.WLJSONStore.<init>(WLJSONStore.java:71)
                                                               at com.worklight.jsonstore.api.WLJSONStore.getInstance(WLJSONStore.java:273)
                                                               at com.worklight.androidgap.jsonstore.dispatchers.ProvisionActionDispatcher.initializeCollection(ProvisionActionDispatcher.java:149)
                                                               at com.worklight.androidgap.jsonstore.dispatchers.ProvisionActionDispatcher.databaseActionDispatch(ProvisionActionDispatcher.java:139)
                                                               at com.worklight.androidgap.jsonstore.dispatchers.BaseDatabaseActionDispatcher.actionDispatch(BaseDatabaseActionDispatcher.java:36)
                                                               at com.worklight.androidgap.jsonstore.dispatchers.BaseActionDispatcher.dispatch(BaseActionDispatcher.java:90)
                                                               at com.worklight.androidgap.jsonstore.dispatchers.DispatchingPlugin$ActionDispatcherRunnable.run(DispatchingPlugin.java:79)
                                                               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                               at java.lang.Thread.run(Thread.java:761)
02-11 13:18:43.148 9317-10425/com.mobiInspect D/JSONSTORE:JSONStoreLogger.logDebug in JSONStoreLogger.java:177 :: os.arch: x86_64
02-11 13:18:43.152 9317-10425/com.mobiInspect D/JSONSTORE: JSONStoreLogger.logDebug in JSONStoreLogger.java:177 :: Extracting zip file: featurelibs/x86/libcrypto.so.1.0.0
02-11 13:18:43.155 9317-9317/com.mobiInspect W/art: Attempt to remove non-JNI local reference, dumping thread
02-11 13:18:43.264 9317-10425/com.mobiInspect D/JSONSTORE: JSONStoreLogger.logDebug in JSONStoreLogger.java:177 :: Loading library using System.load: /data/user/0/com.mobiInspect/no_backup/libcrypto.so.1.0.0
02-11 13:18:43.269 9317-10425/com.mobiInspect D/JSONSTORE: JSONStoreLogger.logDebug in JSONStoreLogger.java:177 :: com.mobileiron.wrapped is set to false
02-11 13:18:43.281 9317-10425/com.mobiInspect D/JSONSTORE: JSONStoreLogger.logDebug in JSONStoreLogger.java:177 :: Loading library using System.load: /data/user/0/com.mobiInspect/no_backup/libcrypto.so.1.0.0

【问题讨论】:

  • 您是否在使用除 MobileFirst Foundation 之外的任何其他 Cordova 插件?请使用所有插件的列表更新问题。
  • 我相信您安装的一个或几个第三方插件会导致此错误。仅使用 cordova-plugin-mfp 和 cordova-plugin-mfp-jsonstore 创建一个新应用程序,您将不会看到此错误。
  • @Srujan reddy 尝试了提供here 的 MFP JSONStore 8.0 示例,该应用程序在 64 位设备上运行良好。在 Nexus 5X 上试过这个。请分享一个重现问题的示例以进一步调试。

标签: android ibm-mobilefirst jsonstore


【解决方案1】:

这是因为我们在等级文件中使用了渲染脚本。此渲染脚本将在构建 apk 时导入 X86_64 和 armv-64a 库。

要解决这个问题,我们有两种选择

1) 我们可以从构建中删除 64 位库,或者使用 build.gradle 文件中的以下 ndk 属性将 abiFilters 设置为仅打包 32 位架构:

android {
    ....
    defaultConfig {
        ....
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }
    }
}

2) 将renderscriptApi和renderscriptEnableMode注释掉,重新打包apk。

【讨论】:

  • 它不能解决这个问题,因为谷歌从 2019 年 8 月起不再接受 32 位 apk。
猜你喜欢
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
相关资源
最近更新 更多