在Android上找不到Kapsel库:找不到" libodataofflinejni.so"

2020-09-13 09:34发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我们已经将Kap...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们已经将Kapsel添加到我们的UI5应用程序中。 当我在Samsung S4 Mini上使用此应用程序时,一切正常。

如果我尝试在Samsung S8上使用它,它将"无声地"停止工作。 当我说"无声"时,我的意思是该应用程序不会崩溃但无法运行(它在OData同步对话框中被循环阻止)。

我在JS端没有看到任何错误,但在Android端却看到了错误。

我看到的错误是这个:

 E/SMP_LOGON:从登录管理器中检索到的证书的证书信息为空
 E/SMP_AUTH_PROXY:由于InvocationTargetException,从登录管理器获取证书失败:null
 I/com.sap.smp.authflows:[组:com.sap.smp.sdk.android] [工件:HttpConvAuthFlows] [版本:3.15.3] [buildTime:2017:07:19:12:13] [gitCommit  :48bd516ede62773b0ecb863646c41130c7767c29] [gitBranch:n/a]
 D/Shim:加载共享库
 W/System.err:java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader [DexPathList [[zip file"/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/base.apk",zip文件 "/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_dependencies_apk.apk",zip文件"/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_apk"。  ",zip文件"/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_0_apk.apk"、zip文件"/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA= /split_lib_slice_1_apk.apk",压缩文件"/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_2_apk.apk",压缩文件"/data/app/com.techedge.mfspp-H-1jv  -CftPguTjTvA ==/split_lib_slice_3_apk.apk",压缩文件"/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_4_apk.apk",压缩文件"/tech/app/com.com"。  -H-1jvpRUjO-CftPguTjTvA ==/split_lib_slice_5_apk.apk",zip文件"/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_6_apk.apk",  IP文件 "/img/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_7_apk.apk",zip文件"/img/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_8_apk  .apk",zip文件"/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.techedge.mfspp-H-1jvpRUjO-  CftPguTjTvA ==/lib/arm64,/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/base.apk!/lib/arm64-v8a,/data/app/com.techedge.mfspp-H  -1jvpRUjO-CftPguTjTvA ==/split_lib_dependencies_apk.apk!/lib/arm64-v8a,/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_resources/apk.apk.apk!/k /app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_0_apk.apk!/lib/arm64-v8a,/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_1_apk.apk  !/lib/arm64-v8a,/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_2_apk.apk!/lib/arm64-v8a,/data/app/com.techedge.mfspp-H  -1jvpRUjO-CftPguTjTvA ==/split_lib_slic  e_3_apk.apk!/lib/arm64-v8a,/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_4_apk.apk!/lib/arm64-v8a,/data/app/com.techedge。  mfspp-H-1jvpRUjO-CftPguTjTvA ==/split_lib_slice_5_apk.apk!/lib目录/arm64-V8A,/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_6_apk.apk!/lib/arm64-v8a  ,/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_7_apk.apk!/lib/arm64-v8a、/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA=  split_lib_slice_8_apk.apk!/lib/arm64-v8a,/data/app/com.techedge.mfspp-H-1jvpRUjO-CftPguTjTvA==/split_lib_slice_9_apk.apk!/lib/arm64-v8a,/system/lib64,/system/dor/lib64]]]找不到" libodataofflinejni.so"
 W/System.err:位于java.lang.Runtime.loadLibrary0(Runtime.java:1011)
                   在java.lang.System.loadLibrary(System.java:1657)
 W/System.err:位于com.sap.smp.client.odata.offline.common.OfflineStore.load(OfflineStore.java:78)
 W/System.err:位于com.sap.smp.client.odata.offline.common.OfflineStore。(OfflineStore.java:67)
 W/System.err:位于com.sap.mp.cordova.plugins.odata.OData.openOfflineStore(OData.java:264)
 W/System.err:位于com.sap.mp.cordova.plugins.odata.OData.execute(OData.java:130)
 W/System.err:位于org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
 W/System.err:位于org.apache.cordova.PluginManager.exec(PluginManager.java:132)
 W/System.err:位于org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:57)
 W/System.err:位于org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
 W/System.err:位于android.os.MessageQueue.nativePollOnce(本机方法)
                   在android.os.MessageQueue.next(MessageQueue.java:325)
 W/System.err:位于android.os.Looper.loop(Looper.java:142)
                   在android.os.HandlerThread.run(HandlerThread.java:65)
 

因此,当我看到"找不到" libodataofflinejni.so "时,我了解到Kapsel也正在安装一些编译的c ++ 库。

我在源代码中进行了搜索,发现了这一点:

该库存在,但仅适用于x86和armeabi-v7a体系结构。

对于Samsung S8,它使用arm64-v8a架构。 我认为,当android在正确的文件夹(在这种情况下丢失)中找不到.so lib时,它会退回到armeabi文件夹。 这也丢失了。

您知道我是否可以找到并更新发布的armeabi/arm64-v8a库的Kapsel SDK吗?

photo-2018-09-20-00-03-15.jpg (6.4 kB)
2条回答
暮风yp
2020-09-13 10:12 .采纳回答

因此,我坚信当前的SAP MDK(版本3.1)不支持最新的CPU架构,例如用于三星S8 arm64-v8a的CPU架构。

通常,如果遇到此问题,您有两个选择:

  1. 更新MDK并包括.so库,在" jniLibs"内部创建文件夹arm64-v8a并将其添加
  2. 强制Android Studio在构建APK时仅使用当前可用的库

不幸的是,我们处于第二种情况(未优化的情况),所以我们唯一能做的就是"伪造" gradle以构建一个将同时使用和混合使用x86库和armeabi-v7a的构建味道。

您可以编辑gradle.build文件productFlavors代码,并将此部分添加到defaultConfig中。

 android {

     ...

     defaultConfig {
         ...

         ndk {
             abiFilters" x86"," armeabi-v7a"
         }
     }

     ...

 } 

一周热门 更多>

相关问答