java native interface
java本身具备跨平台特点,但不适合做与系统交互的本地功能,同时运行效率较低
c,c++不具备java的跨平台功能,但能很好地完成系统层面的一些操作,且运行效率不错
跨平台的java调用了不跨平台的c,c++,失去了跨平台的优点
jni 实现的流程
- 编程带native方法的java类
- 生成该类拓展名为.h的头文件
- 创建该头文件的c/c++文件,实现native方法
- 将该c/c++文件编译成动态链接库
- 在java程序中加载该动态链接库
android本质是运行在linux上,所以实际编译的时候只需要将so文件导入到目录中即可,abi,application binary interface,定义了一套规范,不同的手机使用的cpu不同,存在不同的交互规则,这些armeabiv-v7a,v8a,armeabi,x86,x86-64有不同的交互规则,这些兼容包一般都向前兼容,实现armeabi-7va会向前兼容前面的包之类的。