jni开发步骤
1. 定义字符或者是方法,被native修饰;
2.Java -jni命令,生成被native修饰的.h文件;
注:要在文件src目录下 输入命令 >javah -jni 被定义的native 所在类的路径
3.h里面的东西赋值到.c,补充完整:添加参数、添加方法体;配置两个mk文件
函数名 .h文件生成
这里要结合jni.h文档看 找到方法
4. 配置两个mk文件
加入两个文件(Android.mk Application.mk),跟.c .h文件放一块
5. 执行ndk命令生成so文件
6.回到Java层,加载so
7.加载保存,运行
Jni接口 1.看有没有返回值,有要定义变量接收 无就不用管 2.*env-> 指出来 删掉后面括号 3. 把参数补充完整
动态注册 流程跟静态差不多 要注意绑定Java和C进行绑定 typedef struct { const char* name; //第一个参数 name 是java 方法名; const char* signature; //第二个参数 signature 用于描述方法的参数与返回值,也就是java方法签名信息, void* fnPtr; //第三个参数 fnPtr 是函数指针,指向 jni 函数; } JNINativeMethod;
例子:JNINativeMethod nativeMethod[]{ {“add”,”(FF)F”,(void*)addc} {“add”,”(FF)F”,(void*)subc} {“add”,”(FF)F”,(void*)mulc} {“add”,”(FF)F”,(void*)divc} }; RegisterNatives注册方法 //第一个 env 第二个 class 第三个 数组名 第四个 数组个数 sizeof(JNINativeMethod)/sizeof(JNINativeMethod[0]) jint(*RegisterNatives)(JNIEnv*,jclass,const,JNINativeMethod*,jint);
jint (*GetEnv)(JavaVM*, void**, jint);//第三个版本号(return) 第二个 (void**)&env 第一个vm
工具链接:https://pan.baidu.com/s/1Wxa-jRXx72AgUrU6icvUQA
提取码:o3uh
|