zoukankan      html  css  js  c++  java
  • 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方法了

  • 相关阅读:
    主成分分析(PCA)原理及R语言代写实现及分析实例
    R语言代写实现向量自回归VAR模型
    python代写在Keras中使用LSTM解决序列问题
    python代写使用MongoDB,Seaborn和Matplotlib文本分析和可视化API数据
    jl1.如何设置元素的宽高包含元素的边框和内边距
    51.纯 CSS 创作一个雷达扫描动画
    50.1扩展之小球摆动
    50.纯 CSS 创作一个永动的牛顿摆
    4.HTML+CSS制作个月亮
    49.纯 CSS 创作一支诱人的冰棍
  • 原文地址:https://www.cnblogs.com/fanglove/p/2713024.html
Copyright © 2011-2022 走看看