JNI(Java Native Interface,java本地接口)是java平台定义的一套标准的本地编程接口。JNI允许Java代码与本地代码互相操作,即Java代码可以调用本地代码,本地代码也可以调用Java代码。所谓本地代码指的是其他编程语言(如C/C++)实现的、依赖于特定硬件和操作系统的代码。通过JNI调用本地代码,可以实现Java语言所不能实现的功能。在Android平台上,Dalvik虚拟机会实现JNI定义的接口。
从图2-1宗可以看出,JNI可以直接调用本地代码库,并可以通过Dalvik虚拟机实现与应用层和应用框架层之间的交互。
NDK:(Native Development Kits)NDK是便于开发基于JNI的应用而提供的一套开发和编译工具集
NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。
NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。
JNI:JNI是一套编程接口,可以运用在应用层,也可以运用在应用框架层,以实现java代码与本地代码的互相操作。
SDK(Sofware development kit):软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。