你绝对可以在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和
autocomplete。CMake基本上是一个跨平台的构建系统,允许你从一个源树构建许多不同的项目文件(Visual Studio、Xcode、Eclipse等)。就像emacs一样,这非常强大,但需要一定的学习曲线。如果你想立即开始,你可能想先从Xcode和Eclipse开始。如果你在PC上开发,你需要一个Mac VM或Hackintosh来使用Xcode,使用cygwin来使用NDK进行android开发(MacBook Pro用户可以轻松愉快地开始)。
“本地Android开发肯定更加困难。不仅要应对更多的设备分段,而且本地调试也不是很直观。你必须在设备上运行GDB服务器并连接到它以设置断点,许多人都是通过命令行来完成这个过程的。我听说有些人使用
Tegra Tools for Eclipse可以获得基于GUI的IDE。
我强烈建议先在iOS上进行开发,因为你可以从IDE中获得更强大的工具。你可以跟踪内存泄漏,优化代码,轻松设置断点等等。一旦在iOS上开发了一个功能,你就可以开始处理Android本地开发中的.mk文件和其他细节。
以下是关于iOS核心对象和生命周期的一些信息:
”
而对于Android:
只要你与操作系统友好相处并尊重应用程序的生命周期,就可以自由地调用C++逻辑。你可以直接在iOS上这样做,但在Android上,你必须通过JNI来进行调用。如果你封装了平台特定的内容,你可以在两个平台之间共享C++逻辑。
我非常推崇C++,但在这些平台上使用它的选择取决于情况。C++不是这些平台上流行的选择,因此你将找不到太多文档(大部分时间你需要靠自己)。如果你对C++不是很熟悉,复杂性可能会增加一些(你是否熟悉RAII, design patters, STL?)。
以下是一些可能适用的情况:
- 如果你需要使用一个由C/C++编写的库
- 如果你想为你的应用程序或游戏构建自己的平台无关框架
- 如果你正在处理实时/性能关键的应用程序,比如游戏
我并不是说你必须在这些情况下使用C++,因为许多人已经用Objective-C开发了游戏。我只是说如果你需要充分利用硬件或者想要更具可移植性的东西,这可能是值得考虑的。