JNI是什么?
JNI是Java Native Interface的缩写(Java本地调用)。
Java平台和本地C代码进行相互操作的API接口称为Java本地代码接口。
什么时候该使用JNI?
Java之所以不能和C/C++想通,最主要的原因就是类型差异。那么该什么场景使用JNI?
1.当应用程序需要访问系统的各个特性和设备,并且这些特性和设备通过Java平台是无法访问时。
2.在一些要求效率和速度的场合,本地代码的运行效率高,比如复杂数学运算,游戏上的3D效果等等。 需要Native语言实现时。
3.当某个模块功能,已经有了一个成熟的,且经过大量测试的N ative代码实现,并且知道如何将其移植到所使用的目标平台上时。
JNI注册:
注册之意就是将Java层的native函数与JNI层对应的实现函数关联起来,这样在调用java层的native函数时,就能顺利转到JNI层对应的函数执行。
注册分静态注册和动态注册两种方式。
静态注册:
所谓的静态注册,就是直接在Java文件调用native库以及写个native方法 然后再c/c++文件中实现这个方法就行了!如:
test.java
static {
System.loadLibrary("droidrobot");
}
public static native int getapkversion(String packagename);
test.cpp
jint Java_com_lib_droidrobot_getapkversion(JNIEnv *env,jobject thiz, jstring packagename)
{
.....
return 1;
}
动态注册:
动态注册好处是不要写很长的方法名
什么时候被调用注册?
Ja