java.lang.UnsatisfiedLinkError:无法从加载器findLibrary加载返回null

时间:2014-09-02 15:36:46

标签: java android android-ndk

我在日食中使用NDK。

这是我在java中的NativeLib:

public class NativeLib {

public native String enCode(String src);

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

public native String deCode(String src);
}

这是C源:

#include <string.h>
#include <jni.h>
#include <stdio.h>

jstring Java_com_example_helloworld_NativeLib_enCode(JNIEnv* env,
    jobject thiz, jstring src) {
...
return (*env)->NewStringUTF(env, result);
}

jstring Java_com_example_helloworld_NativeLib_deCode(JNIEnv* env, jobject thiz,
    jstring src) {
...
return (*env)->NewStringUTF(env, result);
}

我的项目在android 4.2中正常运行,但在android 4.3(平板电脑华硕K012)中出现如下错误

  

java.lang.UnsatisfiedLinkError:无法从loader dalvik.system.PathClassLoader加载HelloWorld [DexPathList [[zip file&#34; /data/app/com.example.helloworld-2.apk" ],nativeLibraryDirectories = [/ data / app-lib / com.example.helloworld-2,/ vendor / lib,/ system / lib,/ system / lib / arm]]]:findLibrary返回null

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

可能是因为您没有为所有平台编译本机代码。华硕K012正在运行英特尔处理器,这可能就是原因。在JNI文件夹和以下参数中添加名为application.mk的文件 APP_ABI:=全部

这会编译所有平台的本机部分。