转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=1751

今天CrystaX终于发布了从官方NDK r7修改而来的定制版Android NDK r7。主要的变化有:

  1. 宽字符
    Google的NDK无法很好地支持宽字符,不管是在C还是C++里。CrystaX NDK含有完全兼容标准的宽字符支持,所以可以更容易地把使用了宽字符/string/stream的现有代码和新代码移植过去。
  2. 新的4.6.3工具链
    从r7-crystax-1开始,CrystaX NDK包含了两个版本的编译器工具链:4.4.3(老的,和Google用的一样)以及4.6.3(新的)。
    新工具链包含了GCC 4.6.3,它包含了Graphite framework,可以让gcc做一些高层内存优化。
    为了兼容于Google的NDK,4.6.3工具链不是默认打开的。打开它需要在Application.mk里加一行:
    APP_TOOLCHAIN_VERSION := 4.6.3
  3. C++11支持(原先被称为C++0x)
    Google的NDK提供了GCC 4.4.3,虽然是很好的编译器,但不支持一些现代的特性。其中一个特性就是新的C++11国际标准(原先被称为C++0x)。C++0x的特性在GCC 4.4.3里的支持很有限。
    通过CrystaX NDK,你现在就可以开始使用很多新的C++0x特性。当然,GCC 4.6.3目前还没有完整的C++11支持,但GCC团队正在努力地制作C++11支持,现在已经包含很多可用的特性(lambdas、decltype、auto等)。要知道已经支持了哪些C++0x的特性,可以看GCC C++ Support page
    要在项目中使用C++0x特性,只要在Application.mk里加一行:
    APP_USE_CPP0X := true
    注意在这种情况下会自动选择新的4.6.3工具链。

另外,CrystaX的版本还修正了一个官方r7的bug,现在不再需要手动拷贝libgnustl_static.a。

下载请见http://www.crystax.net/en/android/ndk/7