Feb 3, 2009

Android STL/STD support

Article by Neil.He
万恶的android在STL和STD的支持上给了C/C++工程师带来了很大的麻烦。
Android的C++支持中只包含少的可怜的std namespace内容(还把std改成的android),和几乎空白的STL(standard Tamplate Library)。
这样的情况造成的严重的后果是,如果你想要porting一个lib到android上,那这个lib最好是连std和stl都不依赖,这对于开发来说无意于一种折磨。
在开发中发现了一点点信息,可能有一定的用处。
如果你的lib依赖stl的一些函数和对象,那么最好是平心静气的找找android的代码里是不是有类似的功能代码,android也是人开发的,也是用C/C++开发的,那么也会遇到类似的问题,所以也会有类似的处理方法,怎么办,缺什么补什么呗。
我在开发中需要用到vector,string,stream等对象,寻寻觅觅,发现还真有,/android/frameworks/base/media/libdrm/mobile2/中有个src/util/ustl-1.0,里面包含了一些stl的支持,虽然简单了点,但是基本上还是够我使用了。
仔细找发现还有很多地方有类似的实现,例如opencore等等。
经过这样看起来是解决了问题,可是android设计大牛们,是否想过这样大家要开发一个lib就要自己实现一部分标准库的功能,那么带来的代码冗余是可想而知的,这样的话,准备一个完整的标准库还是有必要的吧。难道android以后真的强悍到根本不用做中间层的lib,这点我始终怀疑...