问题排除
本节列出在使用 QtApplicationManager 时可能遇到的某些问题以及如何解决它们。
可能的问题或疑问。 |
---|
如何检查我的应用程序管理器实例是否以多进程模式运行? |
如何了解为什么我的应用程序管理器实例不支持多进程模式? |
我的应用程序在应用程序管理器内运行缓慢。有哪些可能的解决方案? |
如何了解我的应用程序是否使用硬件加速? |
如何启用硬件加速? |
我的应用程序在应用程序管理器内立即崩溃。有哪些可能的解决方案? |
如何检查我的应用程序管理器实例是否以多进程模式运行?
使用 --verbose
参数启动应用程序管理器,并验证输出中是否显示了 WindowManager: 以 Wayland 模式运行
。或者,启动一个应用程序,并确保你可以看到至少一个正在运行的 appman-launcher-qml
进程。
如何了解为什么我的应用程序管理器实例不支持多进程模式?
检查“应用程序管理器配置”,您可以在运行 qmake
命令时看到。可能您的配置不支持 QtCompositor
模块。
我的应用程序在应用程序管理器内运行缓慢。有哪些可能的解决方案?
验证您的应用程序是否正在使用硬件加速。
如何了解我的应用程序是否使用硬件加速?
以带有环境变量 QSG_INFO=1
运行 appman
,启动应用程序时应看到类似的输出
[DBG | qt.scenegraph.general | c.p.music] Using sg animation driver [DBG | qt.scenegraph.general | c.p.music] Animation Driver: using vsync: 16.95 ms [DBG | qt.scenegraph.general | c.p.music] texture atlas dimensions: 1024x1024 [DBG | qt.scenegraph.general | c.p.music] R/G/B/A Buffers: 8 8 8 8 [DBG | qt.scenegraph.general | c.p.music] Depth Buffer: 24 [DBG | qt.scenegraph.general | c.p.music] Stencil Buffer: 8 [DBG | qt.scenegraph.general | c.p.music] Samples: 0 [DBG | qt.scenegraph.general | c.p.music] GL_VENDOR: VMware, Inc. [DBG | qt.scenegraph.general | c.p.music] GL_RENDERER: llvmpipe (LLVM 5.0, 256 bits) [DBG | qt.scenegraph.general | c.p.music] GL_VERSION: 3.0 Mesa 17.3.0
如果 GL_RENDERER
是 llvmpipe
,您正在为您的 Wayland 客户端使用软件渲染。
注意:此信息还适用于基于应用 ID 前缀的系统界面本身。在上面的示例中,com.pelagicore.music
被截断为 c.p.music
。
如何启用硬件加速?
这取决于您的硬件和操作系统。
您需要确保已经安装了正确的驱动程序。
- 对于 Ubuntu 或 Debian 上的 NVIDIA,您需要
nvidia-egl-wayland-icd
- 对于 Ubuntu 或 Debian 上的 Intel,您需要
libwayland-egl1-mesa
在桌面系统中,确保您的 Qt 已配置为至少使用 OpenGL ES2/ES3 而不是桌面 OpenGL。在 Qt 的配置摘要中,验证您是否看到了以下行
OpenGL ES 2.0 ........................ yes
您可以通过使用 --opengl
es2 配置选项来强制 Qt 使用 OpenGL ES2。
此外,您还需要确保已构建 wayland-egl
集成插件。如果插件构建成功,您应该有如下文件: <QT_DIR>/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
如果该文件不可用,请检查 QtWayland 的配置摘要,并确保该插件已构建。
我的应用程序在应用程序管理器内立即崩溃。有哪些可能的解决方案?
您的系统设置可能不允许使用 OpenGL 的 Wayland 客户端。在这种情况下,如果应用程序无法进行硬件加速渲染,则应用程序管理和 QML 应用程序启动器会输出一个关键日志消息。
请确保启用硬件加速。
您还可以通过设置环境变量 $QT_QUICK_BACKEND
为 software
来强制软件渲染,但前提是您的应用程序没有显式使用 OpenGL 功能。例如,着色器。
© 2024 Qt 公司有限。本文件中包含的文档贡献版权属于各自的拥有者。本文件提供的内容是根据 Free Software Foundation 发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及其相关标志是芬兰的 Qt 公司和/或在全世界其他国家的商标。所有其他商标均为各自所有者的财产。