【问题标题】:C++ Qt application on Android and iOSAndroid 和 iOS 上的 C++ Qt 应用程序
【发布时间】:2020-06-30 23:14:46
【问题描述】:

作为一个实验,我有一个纯 Qt C++ 应用程序(没有 QML)编译(使用 cmake 和 ninja)并运行:

  • 窗口
  • macOS
  • Linux(ubuntu 和 centos/redhat)
  • FreeBSD

它基本上使用 QMainWindow、QGraphicsItem 和 QDialog、iostream 以及一些 C++ 容器和迭代器。

我想知道安卓的端口是否是:

  • 可能
  • 简单或复杂(如果可能)
  • 如果网上有例子

iOS 也是如此。

【问题讨论】:

  • 移植应该不难,但是对于一个真正可用的移动应用程序,您需要使用 QtQuick 做一个单独的 UI 层。我也至少在过去,在为 iOS/Android 开发时使用 QMake 更容易。

标签: android c++ ios qt portability


【解决方案1】:

是的,这是可能的。我曾在许多为 iOS 和 Android 开发的 Qt 应用程序中工作过。但是,从来没有用过cmake,而是qmake。很高兴您开始尝试使用未来的 cmake,因为 qmake 将在未来的某个时候被弃用。 Qt官方文档开始添加cmake入门教程。

https://doc.qt.io/qt-5/cmake-manual.html

我想建议在移动设备上使用 Qt Quick for GUI。

【讨论】:

  • 还没有启动iOS端口,但是我搬回了qmake,因为cmake中的android manifest支持仍然很弱。在我需要使用清单之前,使用 cmake 的 android 一切顺利。
【解决方案2】:

从技术上讲,这是可能的: 为 Android 和 iOS 编译 C++-Qt 应用程序很容易。 对于 iOS,您仍然需要带有 Xcode 的 Mac。 部署、调试和运行应用程序也非常简单和无缝。

实际上,尝试将非平凡桌面应用程序的 GUI 移植到移动设备是一个可怕的想法。 设计用于大屏幕、鼠标和键盘的图形用户界面在小触摸屏上效果不佳。

既然您提到了QDialog:有些概念在移动设备上的工作方式与桌面设备截然不同。 例如,DialogActivity 取代,用户通常不处理文件。

但是,您可以(我已经做到了)设计一个没有任何 QML 的 Qt GUI 应用程序,该应用程序在小型触摸屏上运行良好,并且至少可以在桌面上使用。 它需要大量的手动调整和修改,但这是可能的。

注意事项:

  • 对于移动应用,qmakecmake 更容易(将来应该会改变)
  • 虽然 Qt 有一些抽象,但您可能需要一些特定于平台的代码(即 JNIJavaObjective-C 的 sn-ps 以及许多 #ifdefs)

【讨论】:

  • 我百分之十的同意这是一个可怕的想法。这只是一个实验,一个练习来感受编译过程是如何工作的。那么这可能是进一步和更清洁探索的起点。
  • 举个简单的例子,您不需要 Java 或 Objective-C 代码。当您开始执行更多“高级”操作(例如打开文件或发送通知)时,这只会成为问题。
  • 我现在也同意您关于 qmake 和 cmake 的说明。后者在引入 android manifest 时简直就是一场噩梦,所以我又搬回了 qmake,这很可惜。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多