你绝对可以在iOS和Android上使用C ++。 我已经为两者编写了自己的游戏引擎。

Xcode是iOS的常规IDE,本身支持“Objective-C ++”开发(编译器支持Objective-C和C ++ )。 您需要在Objective-C中编写一个瘦包装器来与操作系统进行交互,但如果您愿意,可以用C ++编写其他所有内容。 如果您下载Xcode命令行工具,您也可以从脚本构建。

Eclipse是Android的常用IDE,如果下载NDK,您可以利用JNI在Java和C ++之间进行交互。 与iOS非常相似,您至少需要Java包装器才能与操作系统进行交互。

但是,您不仅限于Eclipse和Xcode。 例如,您可以使用emacs和/或使用CMake来尝试合并项目设置。 Emacs是一个非常强大和灵活的IDE,但它有一个非常陡峭的学习曲线,并且不是很直接安装。 如果你在Mac上这样做我会推荐emacsformacosx并安装ECB和自动完成 。 CMake基本上是一个跨平台构建系统,允许您从一个源树构建许多不同的项目文件(Visual Studio,Xcode,Eclipse等)。 就像emacs一样,这是超级强大的,但有点陡峭的学习曲线。 如果你想立即进入,你可能会想要从Xcode和Eclipse开始。 如果你在PC上进行开发,你需要使用Mac VM或Hackintosh来使用Xcode和cygwin来使用NDK for android(Macbook Pro的用户可以立即获得乐趣,而且不会有任何麻烦)。

原生Android开发肯定要困难得多。 您不仅需要更多的设备分段才能应对,而且本机调试不是很直接。 您必须在设备上运行GDB服务器并与其连接以设置断点,并且许多人通过命令行执行此操作。 如果你想要一个基于GUI的IDE,我听说有些人在Tegra Tools for Eclipse上取得了成功。

我肯定会建议首先在iOS上进行开发,因为您可以从IDE获得更强大的工具。 您可以轻松跟踪内存泄漏,配置文件代码,设置断点;)等。一旦您在iOS上开发了一项function,您就可以使用.mk文件和Android本机开发的其他优点进行搏斗。

以下是iOS的核心对象和生命周期的一些信息:

核心对象

生命周期

对于Android:

生命周期

只要您熟悉操作系统并尊重应用程序的生命周期,您就可以自由地调用C ++逻辑。 您可以直接使用iOS执行此操作,但使用Android时,您必须通过JNI对呼叫进行编组。 如果封装特定于平台的平台,则可以在两个平台之间共享C ++逻辑。

我是C ++的大力倡导者,但使用它的选择取决于这些平台的情况。 C ++不是这些平台的流行选择,因此你找不到那么多的文档(你自己很多时候都是这样)。 如果你不熟悉C ++(你熟悉RAII , 设计模式 , STL吗?),复杂性可能会有所提高。

以下是一些可能有意义的情况:

如果您需要使用在C / C ++中编写的库

如果您想为您的应用或游戏构建自己的平台无关框架

如果您正在使用游戏等实时/性能关键应用程序

我不是说你必须在这些情况下使用C ++,因为许多人已经在Objective-C中开发了游戏。 我只是说,如果您需要充分利用硬件或者只是想要更便携的东西,可能需要考虑。