我在日食中使用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
任何人都可以帮助我吗?
答案 0 :(得分:3)
可能是因为您没有为所有平台编译本机代码。华硕K012正在运行英特尔处理器,这可能就是原因。在JNI文件夹和以下参数中添加名为application.mk的文件 APP_ABI:=全部
这会编译所有平台的本机部分。