为iOS和Android编译C++代码(XCode).这是真的吗?

Jav*_*ner 27 c++ xcode android ios

我想尝试编写和编译iOS和Android设备的C++代码.我已经使用XCode一段时间了(我正在为MacOS和Windows编写c ++代码).所以我想将XCode用于我的目的.

问题是我不知道如何为Android设备和iPad/IPhone编译C++代码.我想在iOS和Android上使用crossplatform-solution,但不想使用Marmalade(c ++)或其他类似的框架.

这是真的吗?:)是否有教程或其他有用的材料?

Mat*_*ers 59

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

Xcode是iOS的常规IDE,本身支持"Objective-C++"开发(编译器支持Objective-CC++).您需要在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上开发功能,您就可以与.mk文件和Android本机开发的其他优点进行搏斗.

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

对于Android:

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

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

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

  • 如果您需要使用在C/C++中编写的库
  • 如果您想为您的应用或游戏构建自己的平台无关框架
  • 如果您正在使用游戏等实时/性能关键应用程序

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