Android JNI和NDK的关系

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

1、什么JNI

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

 

上面过程分为2个部分:

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

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

 

2、NDK

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

 个人理解,NDK就是能够方便快捷开发.so文件的工具。

JNI的过程比较复杂,生成.so需要大量操作,而NDK就是简化了这个过程。

  

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

其中,在java中加载库文件的代码如下:

     System.loadLibrary(*.so的档案名);

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

     public class MediaPlayer{   

         static {

                   System.loadLibrary("media_jni");

              }

     }

Android JNI和NDK的关系,布布扣,bubuko.com

Android JNI和NDK的关系

上一篇:[Android界面3]屏幕比例,像素,自适应


下一篇:最新版ADT(Build: v22.6.2)总是引用appcompat_v7的问题