Android平台说明

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

插件和导入注意事项

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

Qt GUI依赖

鉴于Android应用程序通常包含GUI元素,Qt for Android插件主要构建用于提供GUI,因此它实现了各种QPA抽象。因此,部署Qt for Android应用程序通常需要依赖Qt GUI。此外,值得注意的是,Qt Creator仅支持Gradle构建和部署,这意味着默认情况下不支持命令行或shell执行。

OpenGL特殊注意事项

现代设备通常支持OpenGL ES 3.0或3.1,以及2.0。要获取合适的OpenGL上下文,请通过QSurfaceFormat::setVersion设置请求的版本。

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

已知问题

预测文本

由于某些设备上的一个错误,当您使用ImhNoPredictiveText关闭预测文本时,此属性被忽略并且预测文本仍然启用。为了解决此问题,请将环境变量QT_ANDROID_ENABLE_WORKAROUND_TO_DISABLE_PREDICTIVE_TEXT设置为1。但是,一个副作用是此环境变量可能会导致其他键盘(例如Gboard)出现问题。如果您使用像日语这样的语言并且与Gboard一起使用,则只会显示QWERTY键盘。此环境变量在每次显示键盘时都会查询,因此可以根据需要打开和关闭解决方案。

显示切口模式

Android LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES不受支持。有关更多信息,请参阅QTBUG-114437

文本符号缓存

由于某些OpenGL驱动程序中的错误,Qt用于缓存文本符号的机制在所有Android设备上并不像预期那样工作,导致文本出现混乱。为此,已经实施了一个解决方案,但它可能增加内存消耗并且也可能影响文本渲染性能。默认情况下现在在所有设备上使用该解决方案。

您可以通过将环境变量 QT_ANDROID_DISABLE_GLYPH_CACHE_WORKAROUND 设置为 1true 来禁用这个绕过办法。但是,您应该在确认所有目标设备上的文本都正确显示后再这样做。

限制条件

Qt的一些模块可能不具备在Android上的支持或者有局限性。更多详细信息,请参阅QTBUG-72086

常见问题

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

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

  • 我应该使用 QtService 还是 Android Service

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

  • Android Fragments 可以与Qt一起使用吗?Qt中Fragment的等效是什么?

    Android Fragments 不能与Qt一起使用。然而,Qt提供自己的模块化组件和视图,通过QML实现。您可以在一个QML视图中组合多个组件。更多详细信息,请参阅Qt Qml

© 2024 The Qt Company Ltd. 在此处包含的文档贡献的版权归其各自的所有者。在此提供的文档根据自由软件基金会在发布的GNU自由文档许可1.3版的条款进行许可。Qt及其 respective标志是The Qt Company Ltd.在芬兰和/或全球其他国家的商标。所有其他商标均为其各自所有者的财产。