1、什么是NDK?
NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
2、为什么使用NDK?
@1、代码的保护。由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。
@2、可以方便地使用现存的开源库。大部分现存的开源库都是用C/C++代码编写的。
@3、提高程序的执行效率。将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。
@4、便于移植。用C/C++写得库可以方便在其他的嵌入式平台上再次使用。
3、什么是JNI?
JNI的全称是JavaNative Interface,它提供了若干的API实现了Java和其他语言的通信(主要是C和C++)。
4、为什么使用JNI?
JNI的目的是使java方法能够调用c实现的一些函数。
5、安卓中的so文件是什么?
android中用到的so文件是一个c++的函数库。在android的JNI中,要先将相应的C语言打包成so库,然后导入到lib文件夹中供java调用。