29

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

问题是我不知道如何为 Android 设备和 iPad/iPhone 编译 C++ 代码。我想为 iOS 和 Android 使用跨平台解决方案,但不想使用 Marmalade (c++) 或其他框架。

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

4

1 回答 1

65

您绝对可以在 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 核心对象和生命周期的一些信息:

对于安卓:

只要您能很好地使用操作系统并尊重应用程序的生命周期,您就可以自由地调用 C++ 逻辑。您可以直接使用 iOS 执行此操作,但使用 Android 您必须通过 JNI 编组调用。如果您封装平台细节,您可以在两个平台之间共享 C++ 逻辑。

我是 C++ 的忠实拥护者,但使用它的选择确实取决于这些平台的情况。C++ 不是这些平台的流行选择,因此您不会找到那么多文档(大部分时间是您自己)。如果您对 C++ 不是很熟悉(您熟悉RAII设计模式STL吗?),复杂性可能会增加一点。

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

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

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

于 2013-03-04T21:29:12.377 回答