findLibrary返回null Android NDK

时间:2015-10-23 03:05:42

标签: android android-ndk

我正在尝试使用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'
    }

1 个答案:

答案 0 :(得分:0)

确保编译libhello-jni.so并将其放在项目中的/ libs / [ARCH]下。你也可以解压缩你的apk,看看它是否在那里。