使用 Android SDK(或 Marmalade 等)将 C++ 游戏移植到 Google 有多难

How difficult is it to port a C++ game to Google Play using Android SDK (or Marmalade, etc)

我目前正在用 C++/SFML 开发游戏,我知道 Google Play 游戏通常是 C 或 Java,但可以制作 "app"(不是一定是游戏??) Google Play 是用 C++ 编写的。我知道这样做你必须使用 Android SDK(我不确定 SDK 在这个时间点是如何工作的)或类似的软件,如 Marmalade 必须与 c++ 代码一起使用,以便在 Android 上实现 运行。 两个问题:

1) 是否存在无法使用 Android SDK 移植到 Google Play / Android 的 c++ 代码元素(例如指针)?

2) 使用 Android SDK 或类似软件将 c++ 代码移植到 Google Play / Android 有多难?

提前致谢

您可以使用 NDK 在 Android 上编译 C++。

至于SFML,它显然不适用于Android 'yet':

With SFML, your application can compile and run out of the box on the most common operating systems: Windows, Linux, Mac OS X and soon Android & iOS.With SFML, your application can compile and run out of the box on the most common operating systems: Windows, Linux, Mac OS X and soon Android & iOS.

至于移植有多难 - 显然这是一个观点,但根据我的经验 Android 本机开发比 Android JavaVM 或桌面开发要困难得多。

我不会谈论 SFML,因为我还没有听说过它,并且将专注于 C++ 方面。我以写原生 iOS 和 Android 为生。在此上下文中,这意味着 Java 使用 Android SDK 和 Objective C 用于 iOS。

从事过两个项目,将业务逻辑和 类 从一个项目移植到另一个项目非常容易。我已经有好几年没有接触 C++ 了,但是除非你用多重继承做一些非常时髦的事情,否则编码本身会很简单。

我遇到困难的地方(你会遇到更多)是 GUI 方面的事情。如果您来自 PC 编码,您的 GUI 代码将需要进行大范围的修改。一个例外是具有响应式设计的 Web GUI,但这会带来很多其他问题,例如没有本机 API 和功能有限。

关于 NDK,您需要了解这是真正的低级代码,用机器语言编写。这意味着您不喜欢写一次,运行 Java 的任何地方,并且需要为 ARM 和 Intel 设备编译。英特尔在这个市场上一直处于弱势,但我不会打赌他们。

对于 iOS,这意味着 XCode 将为 ARMv7、ARMv7s、ARM64(以及用于模拟器的 IA-64)生成重复代码。这无论如何也没有办法。

一种替代方法是使用真正的网络应用程序。抛弃这个遗留的 C++ 并使用 HTML 和 JavaScript。如果您将游戏移植到网络上,您就可以 运行 它无处不在。 iOS (UIWebView) 和 Android (WebView) 都支持 Web 容器。当然,这将伴随本周令人兴奋的新框架。