java.lang.unsatisfiedlinkerror:无法加载testjni:findLibrary返回null

时间:2012-12-14 09:04:57

标签: android android-ndk java-native-interface

我在没有eclipse的android源路径 / packages / apps / 中创建了一个android项目(TestJni)。我编译了android源代码。

我添加了 jni 文件夹。 在jni文件夹下,有一些文件,包括Android.mk和basic.c。

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := basic.c
LOCAL_MODULE := testjni
include $(BUILD_SHARED_LIBRARY)

basic.c

#include<string.h>
#include<jni.h>
jstring Java_com_example_FristJniActivity_getStringFromJni(JNIEnv *env, jobject thiz) {
    return (*env)->NewStringUTF(env, "hello ndk and jni");
}

当前android项目的根目录,有一个Android.mk Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := TestJni
LOCAL_JNI_SHARD_LIBRARIES := testjni
LOCAL_REQUIRED_MODULES := testjni
include $(BUILD_PACKAGE)

在src文件夹中,有一个活动(FristJniActivity) FristJniActivity.java

static {
    System.loadLirary("testjni");
}
public native String getStringFromJni();

public void onCreate(Bundle b) {
    super.onCreate(b);
    TextView tv = new TextView(this);
    tv.setText(getStringFromJNi());
    setContentView(tv);
}

然后我编译了TestJni应用程序,可以找到apk。但是在我将它推入手机后,强行关闭

错误是:   java.lang.unsatisfiedlinkerror:无法加载testjni:findLibrary返回null

我用Google搜索了一下。但我找不到解决方案。

我检查了apk文件,testjni.so文件已存在于/ lib / armeabi-v7a /目录中。

2 个答案:

答案 0 :(得分:0)

我修改了一些值

jni / Android.mk

LOCAL_MODULE := libtestjni

Android.mk

LOCAL_JNI_SHARD_LIBRARIES := libtestjni
LOCAL_REQUIRED_MODULES := libtestjni

,然后使用命令“ adb install * .apk”。

然后它运作良好。

答案 1 :(得分:0)

此问题解决了UnsatisfiedLinkerror。再次 ndk_build 再次构建.so文件 因为每次更改.c文件时,都必须构建 .so 文件