3

在我最近开始的实习中,我需要将一个相当大的 Visual C/C++ 项目移植到 Android。昨天我问了另一个关于这个话题的问题,寻求一些帮助来寻找移植的概念。我得到了一个建议使用自动化解决方案的答案(例如用于 android 的单声道),但是经过一天对我的概念进行明确的研究后,我倾向于使用“手动解决方案”,这意味着我手动删除所有 Windows 和 Visual 特定的将其替换为 Android 下可用的功能。

现在,我想到的第一件事是首先使用 windows gnu Complier 删除所有 Visual 特定的内容,然后使用 linux gnu Compiler 删除所有与 Windows 相关的内容(然后使用 ndk 使其可在 Android 上运行)。

这意味着我将它从 Windows 移植到 Linux,而不是从 Linux 移植到 Android,假设从 Linux 到 Android 的步骤非常小,因为我希望代码从 Linux 到 Android 几乎可以保持不变,因为 Android 是基于 Linux核心。

现在我的问题是:这是一个好主意,还是从 Linux 移植到 Android 也是一项巨大的努力,所以我会做两次所有工作,一次是从 Windows 到 Linux,另一次是从 Linux 到 Android?!

绝对欢迎提出如何做得更好的建议!

编辑:忘了提一下,这将是一个更大的应用程序的一部分,并且不包含任何 GUI 东西(当然,我知道这是因为,尽管 linux 到 Android 步骤会很繁重),只是上面和下面的组件的接口.

4

1 回答 1

2

不要尝试手动删除“Windows 的东西”。

而是创建一个“仿真层” - 在标题中定义项目使用的所有窗口函数并编写它们的主体。

因此,您将保持您的项目不受影响,甚至可以使用它的新版本(如果有的话)。

在移植 Windows->Linux 时,您可能会遇到以下“大”问题:

  • windows 注册表模拟
  • windows 多线程模型和 IPC 有点难以翻译成 Linux 术语。尤其是 SetEvent 和 WaitForMultipleObjects
  • GUI(但我明白,你没有)

移植Linux->Android最大的麻烦应该是UI。如果您不涉及用户交互,我建议先移植 win->lin。

如果需要,您可以从 Linux 中引入和构建缺少的库。

如果需要任何用户交互,您可能想用 Java 编写原生 Android 前端应用程序,并通过 D-Bus 与您的主程序进行交互。

于 2012-08-21T13:34:42.870 回答