android - 使用预建的静态库

标签 android android-ndk

我查看了 SO 和 google 上的每个问题,但仍然没有运气。

我已经获得了一个预构建的静态库 libdroid.a,我需要在我的应用程序中使用它。

我试过用 Android.mk 把它放在 jni 文件夹里

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libdroid
LOCAL_LDLIBS := libdroid.a
include $(PREBUILT_STATIC_LIBRARY)

然后用java调用它

static {
        System.loadLibrary("droid");
    }

     public static native int droidCall(int num1, int num2);

但是当我运行应用程序时我得到

java.lang.UnsatisfiedLinkError: Couldn't load droid: findLibrary returned null

我想这是因为它不应该放在 JNI 文件夹中?但我也在 obj 和 libs 文件夹中尝试过。

最佳答案

您需要创建自己的共享库 (*.so),它将从该预建静态库中调用您需要的函数。然后用 System.loadLibrary 加载这个 .so 库并使用它的原生函数

关于android - 使用预建的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11529120/

相关文章:

安卓S/MIME开发

android - Appium 测试中的 NoSuchElementException。无法正确获取定位器

android - 接收包安装和卸载事件

android - 什么是 jni/libs 文件夹?

android-layout - 带有自定义布局的 opencv 实现(在 SurfaceView 上)

android - Sencha 应用程序在 IOS 和 Android 上太慢

java - 如何限制 Google map 中的缩放级别和可视区域?

android - 为什么有些 Android 手机会导致我们的应用抛出 java.lang.UnsatisfiedLinkError?

java - 如何在 Java 代码中获取崩溃点

android - 如何修复 OpenFL Android 编译 (flashdevelop) 期间的最小包大小错误?