一、JNI
本意是Java Native Interface(java本地接口),它是为了方便Java调用C/C++等本地代码所封装的一层接口。
二、NDK
Android所提供的一个工具集合,通过NDK可以在Android中更方便地通过JNI来访问本地代码,比如C或C++。
NDK还提供了交叉编译器,开发人员只需要简单地修改mk文件就可以生成特定CPU平台的动态库。
三、使用NDK的好处
1、提高代码安全性。由于so库反编译比较困难,因此NDK提高了Android程序的安全性;
2、可以很方便地使用目前已有的C/C++开源库;
3、便于平台间的移植。通过C/C++实现的动态库可以很方便地在其他平台上使用;
4、提高程序在某些特定情形下的执行效率,但是并不能明显提升Android程序的性能。