部署Qt WebEngine 应用程序

打包和部署应用程序的方法因操作系统而异。对于 Windows 和 macOS,windeployqtmacdeployqt可自动执行生成独立应用程序打包的步骤。

在手动部署依赖于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 的应用程序一起部署:

部署 QML 导入

如果应用程序中使用Qt Quick 集成,则需要部署QtWebEngine 导入目录。

部署Qt WebEngine 进程

Qt WebEngine 部署 QML 进程可利用 Chromium 项目提供的多进程模型。多进程模式要求 进程可执行文件与应用程序一起部署。Qt WebEngine

WebEngine 进程为每个QWebEngineViewWebEngineView 实例执行。例如,打开两个标签页的浏览器应用程序应运行两个独立的进程实例。这是大多数现代网络引擎常用的方法,以提供稳定的浏览体验。

运行时,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 WebEngine
  • v8_context_snapshot.bin 包含先前准备好的 v8 上下文快照,用于加速初始化。调试构建使用单独的快照,文件名扩展名为 ,而不是 。在 macOS 上,每个架构都有一个相应名称的快照,例如 或 。.debug.bin .bin v8_context_snapshot.arm64.bin v8_context_snapshot.arm64.debug.bin

资源从以下位置搜索:

或者,也可以将资源目录路径设置为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.