首页 文章

本地库未从cordova apk加载

提问于
浏览
1

我正在制作一个cordova插件,它将成为.jar文件及其两个.so依赖项的简单包装器 . 我之前在android studio的普通android应用程序中尝试过它 . 通过将本机库复制到jniLibs / armeabi文件夹中,将jar文件复制到libs /中,它可以完美地工作 .

在cordova插件中,我制作了相同的文件夹结构,一切都在同一个地方 . 在plugin.xml中,我将两个文件复制到libs / armeabi中,这是有效的,因为如果我查看apk,它们就在“正确”的文件夹中 .

但是当我尝试使用cordova应用程序中的插件时,它会在尝试调用本机库时抛出UnsatisfiedLinkError:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.ionicframework.*******-2/base.apk"],nativeLibraryDirectories=[/data/app/com.ionicframework.*******-2/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libjni.so"
W/System.err( 4224):    at java.lang.Runtime.loadLibrary(Runtime.java:366)
W/System.err( 4224):    at java.lang.System.loadLibrary(System.java:988)
W/System.err( 4224):    at *******.<clinit>(ComIO.java:407)
W/System.err( 4224):    at *******.<init>(Printer.java:33)
W/System.err( 4224):    at net.terbe.dev.cordova.*******.print(*******.java:54)
W/System.err( 4224):    at *******.cordova.*******.execute(*******.java:42)
W/System.err( 4224):    at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
W/System.err( 4224):    at org.apache.cordova.PluginManager.exec(PluginManager.java:132)
W/System.err( 4224):    at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:57)
W/System.err( 4224):    at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
W/System.err( 4224):    at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
W/System.err( 4224):    at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:53)
W/System.err( 4224):    at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err( 4224):    at android.os.Looper.loop(Looper.java:135)
W/System.err( 4224):    at android.os.HandlerThread.run(HandlerThread.java:61

我应该在哪里复制这些库?

1 回答

  • 1

    我've recently needed to cross-compile a C library for use in a Cordova app, so based on that experience, I' ve创建了一个example Cordova plugin和相应的test app that uses it .

    如果您查看我的plugin.xml,您会看到我还将 armeabi 库复制到 /libs/armeabi ,以及其他架构的其他库 . 该插件肯定有效(你可以试试),所以希望你可以用它作为工作参考 .

    愚蠢的问题:你不是只复制 armeabi 库?因为我支持(ARMv5 / ARMv6)并要求 armeabi-v7a/libs/armeabi-v7a 中...

相关问题