很久没用jni,今天用时报了个java.lang.UnsatisfiedLinkError: getVar异常郁闷很久百度搜也没找到答案,
最后发现居然是忘了写
static{
System.loadLibrary("hello-jni");
}
总结下步骤以防下次忘记
1.新建个类声明一个native方法并加载库
public class Constant {
static{
System.loadLibrary("hello-jni");
}
public native void getVar(String a,String b,String c);
}
2.新建jni目录将Android.mk拷贝到jni并稍做修改
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY)
3.生成java本地方法对应的c代码的方法名进入src
javah 全类名 生成的.h文件拷贝到jni目录
4.新建hello-jni.c文件
#include <stdio.h>
#include <com_example_jni_Constant.h>
JNIEXPORT void JNICALL Java_com_example_jni_Constant_getVar
(JNIEnv *env, jobject obj, jstring a, jstring b, jstring c){
return;
}
5.用Cygwin Terminal工具进入源代码工程目录 输入
$ cd /cygdrive/e/adt-bundle-windows-x86_64-20140702/lottery/
$ ndk-build
编译