截至昨天(NDK r9d),gnustl仍然更全面,例如支持<thread>,<future>和其他一些C++11功能。即使这些也取决于工具链:您不能使用默认的ARM gcc 4.6启用它们。另一方面,stlport许可证是无疑义的免费的,就像AOSP的其余部分一样,而gnustl的GPL v3链接例外并不容易理解。请参见https://groups.google.com/d/topic/android-ndk/OWl_orR0DRQ 获取一些旧的讨论。如果您查看NDK发行说明,您会发现在修复错误方面,这两个STL实现基本上是同等水平的。我很乐意看到性能基准测试,但个人从未遇到过STL实现变化解决实际瓶颈的情况。
GNU STL使用GPLv3许可证发布,这对某些人来说不可接受。 NDK还提供了STLport,可以使用它代替,但作为独立的工具链使用它会更加复杂,因为它并未包含在内。 默认情况下,NDK工具链将链接您的C ++共享库到GNU STL库的静态版本。但是,如果您正在使用多个共享库,则不能链接到静态版本的STL,因为每个共享库都将有其自己的STL副本。这将导致STL中定义的全局变量的多个副本,并可能导致内存泄漏或损坏。 重要:直接使用NDK工具链存在一个严重的限制: 您将无法使用任何C ++ STL(无论是STLport还是 GNU libstdc++)。还没有异常和RTTI。