Android NDK是Android平台提供的C/C++开发接口。
NDK整套工具链完全由google提供,升级支持。
由于Android的底层是基于linux的,内核及之上,java虚拟机以下,
而NDK则正针对是的这一部分,所以,与正常的linux gcc编译工具链差不多,
不同的地方在于,
1. 这是一个交叉编译工具链,链接目标为ARM系
2. 这个工具链自定义了一些android平台相关的宏
3. 有自己的Makefile规则及扩展
对于一般的命令行项目,移植还比较容易,当然这不包括音频、视频处理。
像linux常用的音频软件,alsa,pulseaudio目前都没有成熟的移植,使用了这些的软件包移植时,需要把这部分扩展到android的音频、视频框架。
直接使用NDK做GUI的功能非常弱,非常不成熟,稍微好点的有个qt移植lighthouse,使用起来比较麻烦,并且做出的界面风格与android普通应用风格区别很大。
使用NDK的好处是可以移植大量的linux C/C++开源开发库。
最近移植了几个开发库,遇到的问题还不太多,一般在asm这块,或者一些不常见的函数实现问题。