移植到 Android
大多数 Qt 应用程序都可以轻松移植到 Android,除非它们依赖于 Android 不支持的特定硬件或软件功能。
移植方法的不同取决于现有应用程序是基于 QML 还是基于 Widget、您打算使用的构建工具,以及您是从移动应用程序还是桌面应用程序移植而来。
使用 CMake 构建的基于 QML 的应用程序被认为是移动应用程序的最佳方法。
从 Qt 桌面应用程序移植
您现有的 Qt 代码大部分都能正常工作,但您必须针对不同方向和屏幕尺寸的用户界面可扩展性和布局做出一些决定。请考虑采用响应式布局方法,以充分利用Qt Qml 应用程序的优势。
还有一些考虑因素不会直接受到使用 Qt 的影响,如应用程序商店指南、主题指南等,它们可能会影响您开发应用程序的方式。在此不做讨论。
添加资源
大多数应用程序都需要资源。在此,我们将讨论这对将应用程序移植到 Android 有何影响。
使用 Qt 资源系统
与大多数 UI 应用程序一样,Qt 应用程序也依赖于图片、图标、翻译文件等资源。必须在设备上提供这些资源,因为它们是应用程序正常运行所必需的。
最方便的方法是将资源捆绑到一个 qrc 文件中,然后将其内置到应用程序的二进制文件中。这种方法大大减少了移植工作,并能更快地访问资源。这也是一种跨平台方法,使移植到其他平台变得更容易。
默认情况下,所有 Qt 应用程序都可以使用":/"前缀或 URL 方案前缀 "qrc: "访问 qrc 文件的内容。要了解有关 qrc 文件及其处理方式的更多信息,请参阅Qt 资源系统。
使用资产方法添加资源
Qt for Android 提供了一个基于Android 资产机制的特殊虚拟文件系统。放在"ANDROID_PACKAGE_SOURCE_DIR/assets/"目录下的文件将作为应用程序包的一部分打包。
资产方法是与 Android 应用程序接口实现更好互操作性的最佳选择。您可以使用 "assets: "前缀访问目录中的所有资源。与 qrc 不同的是,这种方法是针对 Android 的,而非跨平台解决方案。
注意: 使用Qt 资源系统需要将qrc
文件捆绑在共享库中,共享库必须首先解压缩并由链接器加载,而 Android 资产则压缩在APK中,可以直接在应用程序中使用。这意味着使用 Android 资产占用的空间更少,但这并不是 Qt 的跨平台解决方案。
使用 CMake 的资产方法
如果您是第一次使用 CMake 或 CMake 与 Qt,请参阅使用 CMake构建。这里的重点是添加资源的步骤。
你可能需要修改一些由 Android Manifest 文件控制的内容。有关详细信息,请参阅Qt for 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");
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.