初步使用Android NDK的感受

发布: 2012-05-04 14:50

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这块,或者一些不常见的函数实现问题。

在java中使用jni调用还算比较简单,用java做界面,用NDK C/C++做功能,使用JNI连接两部分,运行的还不错,打包发布维护也都算比较简单。



既然使用了NDK,使用C/C++,又回到了悲剧的C/C++内存问题时代,对应用的稳定性需求比较高,需要非常注意。


原文: http://qtchina.tk/?q=node/657

Powered by zexport