android - cordova 插件中缺少 jni 文件夹

标签 android cordova java-native-interface

我正在使用第三方库,该库的文件夹 armeabi-v7a 带有 .so 文件。 我正在构建一个使用我提到的先前库的 Cordova 插件。

不幸的是,我为其构建插件的项目也有一些 jni 文件,但有额外的文件夹,如 arm64-v8ax86_64

当我将项目部署到 Android(如 Samsung S6 edge)时,出现以下错误:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/<bla bla>/base.apk"],nativeLibraryDirectories=[/data/app/<bla bla>/lib/arm64, /data/app/<bla bla>/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]] couldn't find "lib_so.so"
at java.lang.Runtime.loadLibrary(Runtime.java:367)
at java.lang.System.loadLibrary(System.java:1076)
at org.<bla bla>.<clinit>(SomeClass.java:22)
at lib.<bla bla>(SomeClass.java:185)
at lib.<bla bla>.SomeClass.access$200(SomeClass.java:47)
at lib.<bla bla>.SomeClass$1.run(SomeClass.java:149)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at lib.<bla bla>(AnotherClass.java:37)

我知道这是因为图书馆只在那个文件夹上提供它的 .so,而我还有其他文件夹。

有没有办法在不涉及开发库的人的情况下解决这个问题?还是那是最简单和/或唯一的方法? 我确实尝试在插件项目中添加库,但是当我尝试将其添加到项目时出现 dex 合并错误。

Execution failed for task ':transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

最佳答案

is there a way to fix this without involving the people who developed the library?

恐怕答案是NO

这是因为您需要源代码才能将其编译为 64 位 arm ABI,即适用于您的案例的 arm64-v8a

关于android - cordova 插件中缺少 jni 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52589057/

相关文章:

安卓火力地堡 : Robo script failing on Location Permissions Dialog

java - 打开键盘时 native 堆内存大小增加 - android

cordova - Visual Studio 2015/ Cordova "Unable to start Debugging"

android - 如何将 JNI(C/C++ 原生代码)添加到现有的 Android Studio 项目

android - Actionbar Compat 更改标题 textColor

Cordova 插件从 UI 线程回调到 javascript 似乎在 PhoneGap 3.3 中被破坏

ios - iPhone游戏,一部手机比另一部手机快

Java重播日志,诊断内存不足错误

java - 将 jobjectarray 转换为 vector<uint8_t>

java - Android - Web 服务器通信