Android NDK 简介
NDK全称:Native Development Kit
1.NDK是一系列工具的集合
- NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的
- NDK集成了交叉编译器,并提供了相应的mk文件隔离平台、CPU、API等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so
- NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作
2.NDK提供了一份稳定、功能有限的API头文件声明
- Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。从该版本的NDK中看出,这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)
Android NDK使用
Android的虚拟机容许你通过JNI调用本地代码。简而言之,这意味着:
- 你的应用程序源代码将声明一个或多个本地方法,通过名字可以看出这些方法是本地的。例如:
native byte[] loadFile(String filePath);
- 你必须提供一个本地共享库包含这些方法的实现,并将其打包到您的应用程序的apk文件中。这些库必须按照UNIX的命名方式, 像lib <something>.so,而且应包含一个标准的JNI入口 。例如:
libFileLoader.so
- 您的应用程序必须显式地加载这些库。例如,需要在应用程序启动时加载,只需如下:
static {
System.loadLibrary("FileLoader");
}
这里注意不要添加lib的前缀或者.so后缀
Android NDK实例
下面大概的展示了如何通过Android NDK开发过程: