如果我的代码使用RTTI,那么它将无法在android上工作?

如果我的代码使用RTTI,那么它将无法在android上工作?,android,c++,java-native-interface,rtti,Android,C++,Java Native Interface,Rtti,我在Android本机开发工具包食谱中读到: 默认情况下,Android提供了最小的C++支持。没有运行时间 类型信息(RTTI)和C++异常支持,甚至C++ 标准库支持,是局部的。下表列出了 默认情况下Android NDK支持的C++标题: cassert,cctype,cerrno,cfloat,climits,cmath,csetjmp,csignal,cstddef,cstdint, cstdio,cstdlib,cstring,ctime,cwchar,new,stl_pair.h,

我在Android本机开发工具包食谱中读到:

默认情况下,Android提供了最小的C++支持。没有运行时间 类型信息(RTTI)和C++异常支持,甚至C++ 标准库支持,是局部的。下表列出了 默认情况下Android NDK支持的C++标题:

cassert,cctype,cerrno,cfloat,climits,cmath,csetjmp,csignal,cstddef,cstdint, cstdio,cstdlib,cstring,ctime,cwchar,new,stl_pair.h,typeinfo,utility

<> P>使用不同的C++可以增加更多的C++支持 图书馆。NDK附带GabI++,STLPUT和GNUSTL C++ 库,除了系统默认库之外。在我们的示例代码中,我们使用 一个外部的“C”来包装C++方法。这是为了避免C++的错误处理。 JNI函数名的名称。C++名字的修改可以改变函数 要包含有关参数的类型信息的名称 函数是否为虚拟函数,等等。虽然这使得C++链接 重载函数,它破坏了JNI函数发现机制

我们还可以使用中介绍的显式函数注册方法 加载本机库和注册本机方法 第2章,Java本机接口,摆脱包装


如果在应用程序的逻辑中使用RTTI,那么它将无法在android上工作?

您可以打开它,默认情况下关闭它。要打开它,请将
LOCAL\u CPPFLAGS+=-frti
添加到makefile。像往常一样,打开此标志的代码将占用更多内存,磁盘空间更大,并且比关闭此标志的代码稍慢。

这对我来说无关紧要:)。核心逻辑是基于RTTI的,如果它不起作用,我就迷路了。所以你说它可以打开,但书上说它不受支持。我不明白的是,你怎么能打开一些不受支持的东西。这本书不是过时了,就是完全错了。Android可以很好地完成RTTI,因为它使用的编译器gcc支持RTTI。他们只是在默认情况下关闭它-默认情况下,他们使用-fno_rtti标志来关闭gcc。@narek it表示默认情况下不支持rtti:这并不意味着您不能更改默认设置。