Jni_Onload
as开发ndk安装的工具sdktool:
- CMake:编译工具
- LLDB:调试
动态注册和静态注册
- 比如我们签名的两个案例都是动态注册的方式实现的,通过Java+包名+类型+方法名匹配以后函数或者方法
- 动态注册:比如我们在ndk的jni中写个方法和我们java代码中的某个方法联系起来
操作步骤:
写一个对应关系,然后在onLoad中进行注册
有参数需要写环境和实例参数,如果没有参数则不需要。
JavaVM *_vm;
static const char *className = "com/kangwang/javacallc/bean/People";
/**
* NDK返回
* 运行的时候第一个调用的函数就是这个函数
* @param vm
* @param r
* @return
*/
int JNI_Onlod(JavaVM *vm,void *re){
//一般作为初始化
JNINativeMethod method[] = {
{"javaMethod","()v","nativiemathod"}
};
_vm = vm;
JNIEnv *env = 0;
int r = vm->GetEnv((void**)&env,JNI_VERSION_1_6);
if (r<0){
// 失败
return -1;
}
jclass xc = env->FindClass(className);
// 动态注册
env->RegisterNatives(xc,method,sizeof(method)/sizeof(JNINativeMethod));
return JNI_VERSION_1_6;
}










网友评论