【问题标题】:How difficult is it to port a C++ game to Google Play using Android SDK (or Marmalade, etc) [closed]使用 Android SDK(或 Marmalade 等)将 C++ 游戏移植到 Google Play 有多难[关闭]
【发布时间】:2016-02-19 13:10:36
【问题描述】:

我目前正在使用 C++/SFML 开发游戏,并且我了解 Google Play 游戏通常是 C 或 Java,但可以为 Google Play 编写一个“应用程序”(不一定是游戏??)在 C++ 中。我知道要这样做,您必须使用 Android SDK(我目前不完全确定 SDK 是如何工作的)或类似的软件(例如 Marmalade)必须与 c++ 代码一起使用才能使其运行在安卓上。 两个问题:

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

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

提前致谢

【问题讨论】:

    标签: android c++ sdk google-play marmalade


    【解决方案1】:

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

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

    使用 SFML,您的应用程序可以在 最常见的操作系统:Windows、Linux、Mac OS X 等 Android & iOS. 使用 SFML,您的应用程序可以编译和运行 最常见操作系统上的盒子:Windows、Linux、Mac OS X Android 和 iOS 即将推出

    至于移植的难度——显然这是一种意见,但根据我的经验,Android 原生开发比 Android JavaVM 或桌面开发要困难得多。

    【讨论】:

    • 你认为多快?他们有说明什么时候出吗?
    【解决方案2】:

    我不会谈论 SFML,因为我还没有听说过它,我将专注于 C++ 方面。我以编写原生 iOS 和 Android 为生。在这种情况下,这意味着 Java 使用 Android SDK 和 Objective C for 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 容器。当然,这将伴随着本周令人兴奋的新框架。

    【讨论】:

    • Java 根据定义不是原生的——“原生”是指编译为在特定处理器上运行的代码。此外,Xcode 现在可以生成 bitcode,这意味着您无需为 iOS 上的每个架构都重新编译。
    • 位代码的好点。我没有时间去看看。关于原生的问题,恐怕很多人(包括androidauthority.com/html-5-vs-native-android-app-607214)用它来指代Java。我能说什么?这是错误的,它在我身上摩擦。
    • 在那篇文章中,他们使用的术语是“原生应用”(指的是针对特定平台的应用),而不是“原生代码”。此外,现在在较新版本的 Xcode 中的 iOS 上默认启用位码 - 所以,您可能已经在检查它了 :)。
    猜你喜欢
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    相关资源
    最近更新 更多