zoukankan      html  css  js  c++  java
  • JNI 和 NDK 介绍

    1、JNI

    Java Native Interface(JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机(VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。

    上面过程分为2个部分:

    第一、用C语言生成一个库文件。

    第二、在java中调用这个库文件的函数。

    JNI是Java调用Native机制,是Java语言自己的特性,类似的还有微软.Net Framework上的p/invoke,可以让C#或Visual Basic.Net调用C/C++的API,所以说JNI和Android没有关系,在PC上开发Java的应用,如果运行在Windows平台使用 JNI是是经常的,比如说读写Windows的注册表。

    2、NDK

    Native Development Kit(NDK)是一系列工具的集合。
    * NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库。
    * NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
    * NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。

    NDK是Google公司推出的帮助Android开发者通过C/C++本地语言编写应用的开发包,包含了C/C++的头文件、库文件、说明文档和示例 代码,我们可以理解为Windows Platform SDK一样,是纯C/C++编写的,但是Android并不支持纯C/C++编写的应用,同时NDK提供的库和函数功能很有限,仅仅处理些算法效率敏感的问题。

    个人理解,NDK就是在Android在简化了JNI这个过程。

      

    3、java中调用.so文件代码

        其中,在java中加载库文件的代码如:System.loadLibrary(*.so的档案名);

        例如,Android框架里所提供的MediaPlayer.java类,含指令:

         public class MediaPlayer{   

             static {

                       System.loadLibrary("media_jni");

                  }

         }

    参考链接:

    http://blog.csdn.net/sunboy_2050/article/details/6828830 

    http://blog.csdn.net/elfylin/article/details/6121466

  • 相关阅读:
    Delphi DataSnap入门操作,动起来
    Delphi 记录Record和字符串String相互赋值
    转载:JAVA每天学习
    转载:IntelliJ IDEA 的使用方法总结
    合并多个txt
    如何用vosviewer进行时间线分析——结合pajek
    链路预测(一)
    【js】百分比保留两位小数
    【基础】float保留两位小数
    【js】鼠标悬停显示信息
  • 原文地址:https://www.cnblogs.com/willyan/p/2988344.html
Copyright © 2011-2022 走看看