一、新建一个android工程,建一个本地类
package com.changewei.imp;
publicclassJniClass {
/**
* 测试两个方法
* @return
*/
publicstaticnative String sayHello();
publicstaticnative String add(int x,int y);
}
工程图:
二、生成.h文件
三、(刷新在工程文件夹里有一个jni文件夹)复制一份.h文件,把文件名改为JniClass.c, .c文件代码为(相当于把两个方法结果返回,复制过来后,.c文件的代码已经修改过):
/* DO NOT EDIT THIS FILE - it ismachine generated */
#include"com_changewei_imp_JniClass.h"
/* Header for classcom_changewei_imp_JniClass */
/*
* Class: com_changewei_imp_JniClass
* Method: sayHello
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_changewei_imp_JniClass_sayHello
(JNIEnv *env, jclass obj){
/**
* 返回字符串
*/
return (*env)->NewStringUTF(env, "Welcometo JNI's World !");
}
/*
* Class: com_changewei_imp_JniClass
* Method: add
* Signature: (II)Ljava/lang/String;
*/
JNIEXPORT jint JNICALL Java_com_changewei_imp_JniClass_add
(JNIEnv *env, jclass obj, jint x, jint y){
return x + y;
}
四、把android.mk文件拷到与.h.c文件的文件夹下:代码如下:
LOCAL_PATH :=$(call my-dir)
include$(CLEAR_VARS)
LOCAL_MODULE := my_jni
LOCAL_SRC_FILES := JniClass.c
include$(BUILD_SHARED_LIBRARY)
五、编译成.so文件:
六、在本地类里面添加类库,代码如下:
package com.changewei.imp;
publicclassJniClass {
/**
* 测试两个方法
* @return
*/
publicstaticnative String sayHello();
publicstaticnative String add(int x,int y);
static{//引入库
System.loadLibrary("my_jni");
}
}
七、通过类名.方法名,就可以使用本地类调用.C的类库了
TextView sayHello = (TextView)findViewById(R.id.sayHellow);
sayHello.setText(JniClass.sayHello()+ "/nstring value :" + "50 + 50 = " + JniClass.add(50,50) + "/nname:" + JniClass.getStudent("chenlin", 24));