移植到 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 Assets 机制的特殊虚拟文件系统。放置在“ANDROID_PACKAGE_SOURCE_DIR/assets/”目录下的文件将作为应用程序包的一部分进行打包。
资产方法是实现与 Android API 更好互操作性的最佳选择。您可以使用“assets:”前缀访问该目录中的所有资源。与 qrc 不同,此方法是 Android 专有的,并非跨平台解决方案。
注意:使用 Qt 资源系统需要将 `qrc ` 文件打包到共享库中,这些文件必须先由链接器解压并加载;而 Android 资源则压缩在APK中,可在应用程序中直接使用。这意味着使用 Android 资源可以节省更多空间,但这并非 Qt 的跨平台解决方案。
基于 CMake 的资源处理方法
如果您是 CMake 的新手,或者这是您首次将 CMake 与 Qt 结合使用,请参阅《使用 CMake 进行构建》。本文将重点介绍添加资源的步骤。
您可能需要修改一些由 Android 清单文件控制的内容。有关详细信息,请参阅《Qt for Android 清单文件配置》。因此,您很可能已经像这样设置了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");© 2026 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.