JNI介绍
1.基础知识
JNI(Java Native Interface)Java原生接口
使用JNI可以使java代码与其它代码(如c)进行交互
问:为什么要进行交互?
|- 首先,Java语言提供的类库无法满足要求,且在数学运算,实时渲染的游戏上,音视频处理等方面上与C/C++相比效率稍低。
|- 然后,Java语言无法直接操作硬件,C/C++代码不仅能操作硬件而且还能发挥硬件最佳性能。
|- 接着,使用Java调用本地的C/C++代码所写的库,省去了重复开发的麻烦,并且可以利用很多开源的库提高程序效率
//以上为牛人总结,本人mark一下而已
2.jni使用过程
1.检验C代码的正确性,c代码必须提供个main方法
2.在activity中编写native方法
1 public native int getPressure();
3.到cmd中运行javah命令
D:\jniroom\monitor\bin\classes>javah com.dazhu.MonitorActivity
生成com_dazhu_MonitorActivity.h
4.根据com_dazhu_MonitorActivity.h来写java调用c方法
Hello.c
5.得到Android.mk文件,放到与Hello.c,com_dazhu_MonitorActivity.h同一个目录下
1 LOCAL_PATH := $(call my-dir) 2 3 include $(CLEAR_VARS) 4 5 LOCAL_MODULE := Hello 6 LOCAL_SRC_FILES := Hello.c 7 include $(BUILD_SHARED_LIBRARY)
6.使用Cygwin来使Hello.c生成库文件,打开cygwin来到android工程目录
Administrator@china-80491747f /cygdrive/d/jniroom/monito
$ ndk-build
Compile thumb : Hello <= Hello.c
SharedLibrary : libHello.so
Install : libHello.so => libs/armeabi/libHello.so
7.在java代码中引用libHello.so库
System.loadLibrary("Hello");
8.然后就噢了~~~~~~,可以调用使用java代码中的native方法了