1.6 NDK开发环境配置
Google官方对NDK(Native Development Kit,原生开发工具集)的解释如下:
The Android NDK is a set of tools that allows Android application developers to embed native machine code compiled from C and/or C++source files into their application packages.
可见,NDK是为了方便应用开发者在程序中嵌入C/C++代码而提供的工具集。读者可以在http://developer.android.com/sdk/ndk/index.html下载NDK的安装包。
下载后只需解压到任意工作目录即可。有了NDK,就可根据示例程序编写JNI实现方法,然后放到NDK相应目录运行ndk-build,系统将自动编译出JNI方法对应的共享库。
在终端中运行命令tree-L1,查看NDK中都包含哪些组件。
allong@android:~/bin/android-ndk-r8$tree-L 1
├——build
├——docs
├——documentation.html
├——GNUmakefile
├——ndk-build//NDK编译脚本,大大简化了应用层JNI开发
├——ndk-build.cmd
├——ndk-gdb
├——ndk-stack
├——platforms
├——prebuilt
├——README.TXT
├——RELEASE.TXT
├——samples//NDK提供的示例代码
├——sources
├——tests
└——toolchains
在NDK出现之前,第三方应用程序基本依赖于SDK开发,如果要开发基于JNI的应用程序,其配置十分复杂。NDK的出现大大简化了这一过程,应用开发者可以方便地使用C/C++编写应用程序,并可以很方便地将生成的共享库文件封装进应用程序的安装文件(apk)。
相对于SDK开发,NDK开发的主要优势如下:
可以将一些涉及商业机密的代码用本地代码实现,这样发布的代码不容易被窃取。
可以将一些需要提高执行效率的代码放入本地中实现。
移植已有的C/C++代码资源,特别适合于游戏开发者。
但相对于SDK开发,NDK开发还有如下劣势:
NDK支持的功能远不如SDK。
程序兼容性很难保障。
调试难度加大。
本书主要讲解框架层部分,而框架层使用了大量的JNI调用。在应用层配合NDK演示JNI的使用极为方便,所以本书第2章JNI部分会通过一个实例来讲解在NDK下如何开发JNI应用。