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方法了

posted @ 2012-10-06 15:47  柱柱  阅读(242)  评论(2编辑  收藏  举报