JSONStore初始化失败,错误:-11 msg:OPERATION_FAILED_ON_SPECIFIC_DOCUMENT
问题描述:
我们目前正在开发一个使用MobileFirst Foundation 8.0(20170131)的Cordova应用程序,该应用程序在x86体系结构Android设备和AVD上运行良好。但是当涉及像Note 5和Google Pixel这样的64位体系结构设备时,我们在初始化JSONStore API时会看到以下错误消息,它说资产/ featurelibs中的libcrypto.so.zip文件是32位的的64位。JSONStore初始化失败,错误:-11 msg:OPERATION_FAILED_ON_SPECIFIC_DOCUMENT
错误的Android工作室(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
答
这是因为我们使用我们的gradelfile中的renderScript的。这个renderscript将在构建apk时导入X86_64和armv-64a库。
为了解决这个问题,我们有两个选择
1)我们可以从构建删除64位库,或者设置abiFilters通过的build.gradle文件中使用下面NDK物业打包仅32位架构:
android {
....
defaultConfig {
....
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
}
2)注释掉renderscriptApi和renderscriptEnableMode并重新打包apk。
除了那些MobileFirst Foundation之外,您还在使用任何其他Cordova插件吗?请使用所有插件列表更新问题。 –
我相信您安装的一个或多个第三方插件会导致此错误。使用cordova-plugin-mfp和cordova-plugin-mfp-jsonstore创建一个新应用程序,您不会看到此错误。 –
@Srujan reddy尝试了MFP JSONStore 8.0提供的示例[这里](https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/application-development/jsonstore/cordova/),该应用完全适用于一个64位设备。试用Nexus 5X。请分享重新创建问题的示例以进一步调试。 –