部署Qt WebEngine 应用程序
打包和部署应用程序的方法因操作系统而异。对于 Windows 和 macOS,windeployqt和macdeployqt可自动执行生成独立应用程序打包的步骤。
在手动部署依赖于Qt WebEngine 的应用程序时,必须包含运行应用程序所需的所有文件:库、QML 导入、插件和翻译。
有关详细信息,请参阅部署 Qt 应用程序。
目标平台
Qt WebEngine 我们尽力支持 Qt 的所有 。不过,由于 Chromium 的要求不同,这并不总是可行的。已知的限制有Supported Platforms
- Qt WebEngine 目前仅支持 Windows、Linux 和 macOS。
- 在 Windows 上,Qt WebEngine 仅支持 Windows Vista 或更新版本作为目标平台。由于 Chromium 使用了较新的 API,因此不支持 Windows XP。也不支持 WinRT。
- 在 Windows 上,运行Qt WebEngine 应用程序需要 Visual C++ Redistributable 14.28 或更高版本。
手动部署应用程序
在手动部署依赖于Qt WebEngine 的应用程序时,可能需要部署以下文件:
- 库
- QML 导入
- Qt WebEngine 进程
- 资源
- 翻译
- 音频和视频编解码器
部署库
以下库必须与依赖于Qt WebEngine 的应用程序一起部署:
- QtWebEngineCore 库
- QtWebEngineWidgets 或 库(取决于应用程序类型QtWebEngine
部署 QML 导入
如果应用程序中使用Qt Quick 集成,则需要部署QtWebEngine 导入目录。
部署Qt WebEngine 进程
Qt WebEngine 部署 QML 进程可利用 Chromium 项目提供的多进程模型。多进程模式要求 进程可执行文件与应用程序一起部署。Qt WebEngine
WebEngine 进程为每个QWebEngineView 或WebEngineView 实例执行。例如,打开两个标签页的浏览器应用程序应运行两个独立的进程实例。这是大多数现代网络引擎常用的方法,以提供稳定的浏览体验。
运行时,Qt WebEngine 会在 QLibraryInfo::location(QLibraryInfo::LibraryExecutablesPath) 返回的目录中查找QtWebEngineProcess
可执行文件。对于 Qt 安装来说,这是QTDIR/libexec
(Linux) 或QTDIR\bin
(Windows)。例如,可以通过定义qt.conf
文件来更改路径。或者,也可以将可执行路径设置为QTWEBENGINEPROCESS_PATH
环境变量的值。在 macOS 上,Qt WebEngine 会在.app/Helpers/QtWebEngineProcess
中查找可执行文件。
部署资源
Qt WebEngine Chromium 需要以下资源文件:
qtwebengine_resources.pak
包含 Chromium 所需的资源。qtwebengine_devtools_resources.pak
包含远程调试工具。qtwebengine_resources_100p.pak
包含适合低分辨率显示器的图像。qtwebengine_resources_200p.pak
包含适用于高 DPI 显示器的图像。icudtl.dat
支持 Unicode 国际组件 (ICU)。这是 ICU 的 Chromium 版本,如果 被配置为使用系统 ICU,则不需要该版本。Qt WebEnginev8_context_snapshot.bin
包含先前准备好的 v8 上下文快照,用于加速初始化。调试构建使用单独的快照,文件名扩展名为 ,而不是 。在 macOS 上,每个架构都有一个相应名称的快照,例如 或 。.debug.bin
.bin
v8_context_snapshot.arm64.bin
v8_context_snapshot.arm64.debug.bin
资源从以下位置搜索:
- 在 Linux 和 Windows 上:QLibraryInfo::location(QLibraryInfo::DataPath) 指定目录中的
resources
目录 - 在 macOS 上:
.app/Content/Resources
- 由QCoreApplication::applicationDirPath() 指定的应用程序目录
或者,也可以将资源目录路径设置为QTWEBENGINE_RESOURCES_PATH
环境变量的值。
翻译
本地数据(如en-US.pak
)会从以下位置搜索:
- 在 macOS 上
.app/Content/Resources
- 在 Linux 和 Windows 上:QLibraryInfo::location(QLibraryInfo::TranslationsPath) 指定目录中的
qtwebengine_locales
目录
或者,也可将本地目录路径设置为QTWEBENGINE_LOCALES_PATH
环境变量的值。
Qt 资源文件中的 JavaScript 文件
如果您的WebEngine 应用程序是使用Qt Quick Compiler 构建的,并且应用程序在 .qrc 资源中包含 JavaScript 文件,而这些文件应该从 HTML 页面中加载,请确保在项目中的QTQUICK_COMPILER_SKIPPED_RESOURCES
qmake 变量中指定资源文件。这样可以防止Qt Quick Compiler 试图为相应的 JavaScript 代码生成 C++ 代码,以及从 Qt 资源文件中移除原始 JavaScript 代码,从而导致 HTML 页面被破坏。例如
QTQUICK_COMPILER_SKIPPED_RESOURCES += resources/my_resource.qrc
macOS 特定部署步骤
要在 macOS 上部署Qt WebEngine 应用程序,您需要确保Qt WebEngine 进程签署了权限文件,该文件至少包含QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/Resources/QtWebEngineProcess.entitlements 中列出的权限。
要在 macOS 上部署访问麦克风或摄像头的Qt WebEngine 应用程序,需要为显示给用户的信息提供文本,以解释为什么应用程序要求获得访问摄像头或麦克风的权限。为此,请使用以下键值将文本添加到应用程序的Info.plist
文件中。
对于摄像头使用信息,请使用以下键值提供文本:
<key>NSCameraUsageDescription</key> <string>Your message text for camera usage.</string>
另请参阅Apple 的属性列表文件文档。
对于麦克风使用信息,请使用以下键提供文本:
<key>NSMicrophoneUsageDescription</key> <string>Your message text for microphone usage.</string>
另请参阅Apple 属性列表文件文档。
要公证访问摄像头或麦克风的应用程序,需要将相应的密钥添加到用于部署和公证的应用程序权限文件中。
要启用对摄像头的访问,请添加
<key>com.apple.security.device.camera</key> <true/>
另请参阅Apple 的摄像头权限文档。
要启用麦克风的访问权限,请添加
<key>com.apple.security.device.microphone</key> <true/>
另请参阅Apple 麦克风权限文档。
© 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.