【问题标题】:findLibrary returned null Android NDKfindLibrary 返回 null Android NDK
【发布时间】:2015-10-23 03:05:42
【问题描述】:

我正在尝试使用 Android NDK。作为第一步,我正在尝试从 android 示例中做与 hello-jni 相同的事情。我在项目下创建了jni文件夹并放置了hello-jni.c、Android.mk、Application.mk。我使用 ndk-build 构建了 c 文件。它在 libs 目录和几个 arm* 目录下构建并放置了 .so 文件。但是当我使用

static {
        System.loadLibrary("hello-jni");
    }

在我的活动中,我得到了

10-22 22:58:12.248 2291-2291/? E/AndroidRuntime: java.lang.UnsatisfiedLinkError: Couldn't load hello-jni from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.clinicloud.app.ndktestapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.clinicloud.app.ndktestapp-1, /system/lib]]]: findLibrary returned null
10-22 22:58:12.248 2291-2291/? E/AndroidRuntime:     at java.lang.Runtime.loadLibrary(Runtime.java:355)
10-22 22:58:12.248 2291-2291/? E/AndroidRuntime:     at java.lang.System.loadLibrary(System.java:525)
10-22 22:58:12.248 2291-2291/? E/AndroidRuntime:     at com.clinicloud.app.ndktestapp.MainActivity.<clinit>(MainActivity.java:56)
10-22 22:58:12.248 2291-2291/? E/AndroidRuntime:     at java.lang.Class.newInstanceImpl(Native Method)

我的 Android.mk 文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)

我的 Application.mk 文件包括,

APP_ABI := all

.so 文件被命名为libhello-jni.so

有人可以帮我解决这个问题吗?谢谢。

更新

我通过将以下代码放在我的 build.gradle 中解决了这个问题。

sourceSets.main {
        jniLibs.srcDir 'libs'
    }

【问题讨论】:

  • 确保 libhello-jni.so 已编译并放置在项目的 /libs/[ARCH] 下。你也可以解压你的apk,看看库有没有
  • 谢谢@krypton。我可以发现该库未包含在 apk 文件中。然后我修复了 gradle libs 目录配置的问题。
  • 没问题,到时候我移评论回答。

标签: android android-ndk


【解决方案1】:

确保 libhello-jni.so 已编译并放置在项目的 /libs/[ARCH] 下。你也可以解压你的apk,看看库有没有。

【讨论】:

    猜你喜欢
    • 2012-02-07
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多