移植到Android

除非应用程序依赖Android不支持的具体硬件或软件功能,否则大多数Qt应用程序应该很容易地移植到Android。

移植方法取决于现有应用程序是基于QML还是Widget,您打算使用的构建工具,以及您是从移动应用程序还是桌面应用程序移植。

使用CMake构建的基于QML的应用程序被认为是移动应用程序的最佳方法。

从Qt桌面应用程序移植

您的大部分Qt代码应该都可以使用,但您必须在UI可伸缩性和布局方面做出一些决策,以适应不同方向和屏幕大小。考虑采用响应式布局方法,充分利用Qt Qml应用程序。

有一些这不是直接由Qt影响的考虑因素,例如应用商店指南、主题指南等,可能会影响您开发应用程序的方式。这里不会讨论这些。

添加资源

大多数应用程序都需要资源。这里,我们讨论这如何影响您将应用程序移植到Android。

Qt资源系统

与大多数UI应用程序一样,Qt应用程序也依赖于资源,如图像、图标、翻译文件等。这些资源必须在设备上提供,以便应用程序可以正确运行。

最方便的选项是将资源打包到qrc文件中,该文件被构建到应用程序的二进制文件中。这种方法大大减少了移植工作量,并提供了对资源的快速访问。它还是一种跨平台方法,使得将应用程序移植到其他平台变得更加容易。

默认情况下,所有Qt应用程序都可以使用":/"前缀或URL方案前缀"qrc:"访问qrc文件的内容。有关qrc文件的更多信息以及如何处理它们,请参阅Qt资源系统

使用资源方法添加资源

Qt for Android提供了一个基于Android资源机制的特殊、虚拟文件系统。位于目录"ANDROID_PACKAGE_SOURCE_DIR/assets/"的文件将作为您应用程序包的一部分进行打包。

资源方法是更好的与Android API互操作性选项。您可以使用"assets:"前缀访问目录中的所有资源。与qrc不同,这种方法是Android特有的,而不是跨平台解决方案。

注意:使用Qt 资源系统等同于在共享库中包含qrc文件,这些文件必须先解包然后由链接器加载,而Android资源文件存放在APK文件中并进行压缩,可以直接在你的应用程序中使用。这意味着使用Android资源可以减少空间占用,但使用Qt并不支持跨平台。

CMake中的资源处理方法

如果你首次使用CMake或者结合Qt使用CMake,请参考使用CMake进行构建。在这里,重点是添加资源时要适用的步骤。

你可能需要修改由Android Manifest文件控制的几个设置。更多关于这方面的信息,见Qt Android Manifest文件配置。因此,你可能已经设置了QT_ANDROID_PACKAGE_SOURCE_DIR,如下这样

set_property(TARGET target_name PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
             "${CMAKE_CURRENT_SOURCE_DIR}/android")

现在,你可以在该文件夹中直接放置资源,或者使用CMake的定制步骤将它们从主项目路径复制到资源路径。

然后,你可以按照以下方式从C++中访问该图像资源

QImage image("assets:/images/happy.png");

© 2024 Qt公司。此处包含的文档贡献属于其各自的版权所有者。此处提供的文档是根据自由软件基金会发布、享有GNU自由文档许可证版本1.3的条款授权的。Qt及其相关商标是芬兰的Qt公司及其在全世界各地的商标。所有其他商标均为其各自所有者的财产。