问题描述:打算使用Android的NDK工具用本地库进行应用开发,直接访问硬件数据,首先就需要下载和安装NDK。Android是开放平台,工具自然是免费的,直接上官网下载。
关于NDK:可以使用本地的C/C++库开发部分的应用程序。对于使用C/C++开发的其他平台的应用,易于移植,但真正的Android应用开发中较少用到NDK开发。
首先需要明了,NDK并不适用于所有的应用开发,需要平衡其利弊。使用本地库开发性能上可能得不到很多提升,但软件开发复杂度却增加了许多,除非NDK对自己的应用开发非常关键,否则尽量不要用。
NDK开发适用于独立与设备的,CPU紧张不需要分配过多内存,典型应用有信号处理、物理仿真等。使用NDK先先估量好自己的应用,并了解Android是否提供相应的API。
目前的版本是NDK9,官网提供主流操作系统的版本下载,选择合适自己的下载即可。
版本说明:
NDK 9d于2014年3月更新,增加对
Clang3.4编译器的支持,默认编译器为
GCC4.6。
系统要求:
需要安装完整的SDK工具包,SDK版本在1.5及以上,支持的操作系统有:
Windows XP(32位)或Vista(32位或64位),
Mac OS X 10.4.8或更高(仅X86),
Linux(32位或64位,Ubunbu 8.04或使用GLibc2.7或更高的Linux)。
开发工具:
GNUMake 3.81或更高,
最近版本的awk,
Windows下开发要使用Cygwin1.7及以上。
Android平台兼容性:
基于NDK开发的本地库只能运行于特定硬件平台下,且对Android版本也有要求,支持的平台版本取决于设备的CPU架构,具体的CPU架构所支持的平台版本如下:
ARM, ARM-NEON-----------------Android1.5(API level 3)及以上
x86---------------------------------Android2.3(
APIlevel 9)及以上
MIPS-------------------------------
Android2.3(
APIlevel 9)及以上
为确保兼容性,基于NDK包开发的应用,要在manifest文件中,如下:
android:minSdkVersion="3" />
...
对于使用OpenGLES本地库开发NDK包的,另外对Android平台要求如下:
OpenGL ES 1.1 | Android 1.6 (API Level 4) and higher | android:minSdkVersion="4" |
OpenGL ES 2.0 | Android 2.0 (API Level 5) and higher | android:minSdkVersion="5" |
而且在manifest文件中也要进行说明:
android:glEsVersion="0x00020000" />
...
如果使用了Android的本地库创建Bitmap相关应用,Android平台至少在Android2.2以上。
NDK的安装:
直接将下载的包解压即可(我直接在linux下开发,windows下还要装cygwin,还有可能有其他问题,Win下的应用开发平台就有时会出现一些莫名问题)。
开发之前要确保下载了最新的Android SDK,因为NDK虽然能被旧的平台兼容,但是不能被旧的SDK工具兼容。
解压的NDK文件夹可以重命名,也可以移动到任意位置。