【发布时间】:2016-06-27 19:22:18
【问题描述】:
我目前正在计划开发一个多平台应用程序,但我不确定哪种方式最符合我的要求,因为我能想到的所有可能性都未能满足我的要求。
首先我想写一个安卓应用,感觉应该是一个普通的典型安卓应用。所以我想在我的其他 gui 元素中使用标准的 actionbar 和 android 设计的外观和感觉。完成 android 应用程序后,我计划开发一个 ios 应用程序,它应该有不同的设计,所以无论如何我都会为此重新开发 gui。
但我不想重写代表应用程序智能的其他代码,独立于 gui。我想出了以下几种可能性:
1。 Java GUI 与本机库
在这里,我将我的应用程序的所有代码抽象到一个 C++ 库中(据我所知,ios 也支持使用 c++ 库)并通常在 java 中开发 gui android。该库将拥有一个启动函数,并通过回调函数通知 gui 每次更改。
专业版
- 我可以重用在两个平台上相同的所有代码。我只是单独实现 gui
- android gui 的设计很简单,正如我所希望的那样。它看起来像典型的 android,因为它是典型的 android。
缺点
- 我非常不喜欢 JNI 的使用。尤其是回调函数的签名和名称(从 c++ 调用 java 函数)在编译时不检查,需要大量的手动工作。如果我重命名一个函数并忘记返工本机部分,我只会在运行时注意到这个错误。
2。在原生端构建 GUI
在这里我很难找出什么是可能的,尤其是对于 2.2
2.1 使用Qt
总的来说,我对 Qt 的初步体验只有一些,但据我了解,我会有以下优点和缺点:
专业版
为 ios 和 Android 重用大部分代码。我宁愿为每个平台重新设计 gui,让它们感觉自然。我无法评估 qt 甚至可以帮助我做到这一点
缺点
我必须使用其他 qt 小部件来复制 android gui。这是更多的努力,我不知道是否可以复制 android gui 元素(如操作栏),以便用户不会注意到它。
2.2 从原生端使用android框架
我根本不知道这是否可能,我无法找到此信息。我可以使用“NativeActivity”类并使用 android 框架来构建 gui 并使用例如操作栏?如果这是可能的,它将具有 1. 的优点,也许不会有缺点?
您对我的想法或者甚至是我没有想到的新方法有任何反馈吗? WhatsApp 等其他多平台应用程序如何解决此问题?他们是否有针对每个平台的冗余代码?
谢谢你, 托比
【问题讨论】:
-
将每个平台的 UI 原生地写入其平台。然后,您的应用程序逻辑可能是用于每个平台的依赖项。否则,您可以使用抽象框架,也许是 PhoneGap
标签: android qt user-interface mobile multiplatform