Spec-Zone.ru › Qt

Заметки по платформе Qt WebEngine

Сборка Qt WebEngine из исходного кода

Статические сборки не поддерживаются.

Требования к сборке модулей Qt 5 из исходного кода перечислены отдельно для каждой поддерживаемой платформы:

  • Qt для Windows — Сборка из исходного кода
  • Требования к Qt для X11
  • Qt для macOS — Сборка из исходного кода

Кроме того, для сборки модуля Qt WebEngine требуются следующие инструменты:

  • Все платформы
  • Windows
  • Linux
  • macOS

Тесты для пропуска сборки Qt WebEngine расположены в репозитории qtwebengine в подкаталоге tools\qmake\mkspecs. Их можно найти, выполнив поиск по skipBuild.

Все платформы

На всех платформах во время сборки требуются следующие инструменты:

  • Python 2.7.5 или более поздней версии. Python 3 не поддерживается.
  • Bison, Flex
  • GPerf
  • Node.js версии 8 или более поздней (рекомендуется версия 12 или более поздняя)

Windows

В Windows дополнительно требуются следующие инструменты:

  • Visual Studio 2017 версии 15.8 или более поздней, или clang-cl версии 8 или более поздней
  • Active Template Library (ATL), обычно включенная в установку Visual Studio
  • Windows 10 SDK версии 10.0.19041 или более поздней

Qt WebEngine можно собрать только на 64-битной Windows с 64-битной инструментальной цепочкой. Для сборки Qt WebEngine для 32-битных приложений необходимо настроить и скомпилировать Qt с помощью инструментальной цепочки Visual Studio 2017 для кросс-компиляции x64 в x86. Данную инструментальную цепочку можно настроить в командной строке, выполнив vcvarsall.bat amd64_x86.

Linux

В Linux требуется Clang или GCC версии 5 или более поздней. Поддерживаемые конфигурации — linux-g++, linux-clang и linux-clang-libc++

Qt WebEngine требует pkg-config для определения большинства своих зависимостей. Требуются следующие файлы pkg-config:

  • dbus-1
  • fontconfig

Если Qt был настроен для xcb, также требуются следующие файлы pkg-config:

  • libdrm
  • xcomposite
  • xcursor
  • xi
  • xrandr
  • xscrnsaver
  • xtst

Кроме того, необходимо установить пакеты разработки для khr и libcap.

macOS

Для macOS требуются:

  • macOS 10.13 или более поздняя версия
  • Xcode 10.0 или более поздняя версия
  • macOS 10.13 SDK или более поздняя версия

Примечание: Qt WebEngine нельзя собрать для 32-битного режима macOS (используя macx-clang-32 mkspec).

Использование более ранних версий Qt для сборки Qt WebEngine

Поддерживается сборка Qt WebEngine с более ранними версиями Qt (вплоть до последней LTS-версии). Это означает, что Qt WebEngine 5.15 можно собрать с Qt 5.12.x, Qt 5.14.x и Qt 5.15.

Для использования более ранней версии Qt для сборки Qt Webengine:

  1. Загрузите исходный код qtwebengine.
  2. Из более ранней версии Qt выполните qmake && make (&& make install).

Совместимость с Mac App Store

Приложения, использующие Qt WebEngine, несовместимы с Mac App Store, потому что:

  • Часть кода Chromium использует несколько методов частного API, которые запрещены App Store.
  • Приложения, подаваемые в App Store, должны быть подписаны с включенной функцией App Sandbox. Функция App Sandbox конфликтует с собственной инициализацией ящика Chromium, что приводит к неправильной инициализации Chromium. Это также связано с использованием частного API. Кроме того, автономный Chromium сам по себе официально не тестируется с включенной функцией App Sandbox, и даже если будут предприняты усилия для обхода ограничений App Store, это не гарантирует правильную работу библиотеки.

Поддержка AirPlay на macOS на MacBook с двумя графическими процессорами

Для правильной работы Qt WebEngine при потоковой передаче на AppleTV с MacBook, поддерживающего переключение между графическими процессорами, важно добавить опцию NSSupportsAutomaticGraphicsSwitching в файл Info.plist приложения, установив значение YES. В противном случае могут возникнуть проблемы с отображением при создании новых представлений веб-движка после включения или выключения AirPlay.

Поддержка профиля QSurfaceFormat OpenGL по умолчанию

Если необходимо установить новый профиль OpenGL для формата QSurfaceFormat по умолчанию, его следует задать до объявления экземпляра приложения, чтобы гарантировать, что все созданные контексты OpenGL используют один и тот же профиль OpenGL.

На macOS, если формат QSurfaceFormat по умолчанию устанавливается после создания экземпляра приложения, приложение завершится с вызовом qFatal() и выведет сообщение о том, что формат QSurfaceFormat по умолчанию следует устанавливать до создания экземпляра приложения.

Поддержка изоляции

Qt WebEngine предоставляет встроенную поддержку изоляции для процессов рендеринга Chromium.

В Linux обратите внимание на следующие ограничения:

  • Ядро должно поддерживать функцию анонимных пространств (ядро версии 3.8 или более поздней). Однако в Debian, Ubuntu и других дистрибутивах на базе Debian эта функция по умолчанию выключена. Ее можно включить, установив /proc/sys/kernel/unprivileged_userns_clone в 1.
  • Ядро должно поддерживать функцию seccomp-bpf (ядро версии 3.5 или более поздней).
  • Поддержка изоляции setuid не поддерживается и, следовательно, отключена.

Для явного отключения изоляции используйте один из следующих вариантов:

  • Установите переменную среды QTWEBENGINE_DISABLE_SANDBOX в 1.
  • Передайте аргумент командной строки --no-sandbox в исполняемый файл приложения пользователя.
  • Установите QTWEBENGINE_CHROMIUM_FLAGS в --no-sandbox.

Дополнительная информация приведена в разделе Использование аргументов командной строки.

Требования к памяти в среде Docker

При выполнении примеров Qt Web Engine в контейнере Docker и просмотре сайтов с большим объемом контента могут быть сообщения об ошибках BUS (SIGBUS). Обычно это вызвано тем, что Docker запускает контейнер с слишком маленьким объемом памяти (например, 64 МБ). Для решения этой проблемы увеличьте размер объема памяти.

Доступность и производительность

Qt WebEngine включает поддержку доступности веб-страниц при соблюдении следующих условий:

  • Qt Core настроен и собран с включенной поддержкой доступности.
  • Плагин QPA уведомляется операционной системой о том, что доступность должна быть активирована. Это происходит, например, при использовании программы чтения с экрана в Windows или VoiceOver на macOS.

Из-за некоторых ограничений плагин QPA Linux почти всегда сообщает, что доступность должна быть активирована. На больших страницах HTML это может привести к значительному замедлению скорости рендеринга.

Поэтому начиная с Qt 5.9 поддержка доступности Qt WebEngine по умолчанию отключена в Linux. Ее можно включить, установив переменную среды QTWEBENGINE_ENABLE_LINUX_ACCESSIBILITY в ненулевое значение.

Попапы в приложениях с полноэкранным режимом в Windows

Из-за ограничения в компоненте композиции Windows приложения, показывающие полноэкранное представление веб-движка, не смогут корректно отобразить всплывающие окна или другие окна верхнего уровня. Причина и обходное решение описаны в разделе Полноэкранные окна на основе OpenGL.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtwebengine-platform-notes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API