安卓平台说明

本页包含在 Android 上构建和运行 Qt 应用程序的特定信息。有关支持哪些 Android 版本和 API 级别,请参阅支持Android 版本。

插件和导入 特别注意事项

如果应用程序使用依赖于其他模块的插件,则必须在应用程序的依赖关系中列出这些模块。有关详细信息,请参阅依赖关系检测

Qt GUI 依赖关系

鉴于 Android 应用程序通常包含图形用户界面元素,Qt for Android 插件主要是为提供图形用户界面而构建的,因此它实现了各种 QPA 抽象。因此,部署 Qt for Android 应用程序预计会涉及对 Qt GUI.此外,值得注意的是,Qt Creator 只支持 Gradle 构建和部署,这意味着不支持命令行或 shell 执行。

OpenGL 特别注意事项

除 2.0 外,现代设备通常还支持 OpenGL ES 3.0 或 3.1。要获得合适的 OpenGL 上下文,请通过QSurfaceFormat::setVersion() 设置所请求的版本。

注意: 在仅支持 2.0 的旧设备上使用 OpenGL ES 3.x 功能会导致应用程序崩溃。

已知问题

预测文本

由于某些设备上的错误,当您使用ImhNoPredictiveText 关闭预测文本时,该属性会被忽略,而预测文本仍会启用。要解决这个问题,可将QT_ANDROID_ENABLE_WORKAROUND_TO_DISABLE_PREDICTIVE_TEXT 环境变量设置为1 。不过,一个副作用是,该环境变量可能会导致其他键盘(如 Gboard)出现问题。如果使用日语等语言,Gboard 只能显示 QWERTY 键盘。每次显示键盘时都会查询该环境变量,因此可以根据需要开关该解决方法。

文本字形缓存

由于某些 OpenGL 驱动程序中的一个错误,Qt 用于缓存文本字形的机制无法在所有 Android 设备上正常工作,从而导致文本出现乱码。为了解决这个问题,我们采用了一种变通方法,但这种方法会增加内存消耗,还会影响文本渲染性能。现在所有设备都默认使用该解决方法。

你可以通过将QT_ANDROID_DISABLE_GLYPH_CACHE_WORKAROUND 环境变量设置为1true 来禁用该变通方法。不过,只有在确认文本在所有目标设备上都能正确显示后,才可以这样做。

限制

某些 Qt 模块可能有 Android 不支持的功能或限制。有关详细信息,请参阅QTBUG-72086

常见问题

  • 我应该使用QtActivity 还是AndroidActivity 来创建自定义 Activity?

    QtActivity Android Activity 扩展了 并实现了加载 Qt 库或处理 Android 和 Qt 之间的事件和本地调用所需的逻辑。一般来说,如果使用任何本地调用,则需要扩展 。否则,扩展 也可以。Activity QtActivity Activity

  • 我应该使用QtService 还是Android 服务

    这里的理由与QtActivity 相同。除非您使用的功能需要加载 Qt 库,如本地调用。

  • Android 片段可以与 Qt 一起使用吗?Qt 中的 Fragment 相当于什么?

    Android 片段不能与 Qt 一起使用。不过,Qt 提供了自己的模块化组件和 QML 视图。您可以在一个 QML 视图中组合多个组件。更多信息,请参阅 Qt Qml.

© 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.