Spec-Zone.ru › Qt 5.15

Заметки по платформе 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

Windows

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

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

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 на MacBook с двумя графическими процессорами

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

Поддержка стандартного профиля OpenGL для QSurfaceFormat

Если необходимо задать новый стандартный QSurfaceFormat с изменённым профилем OpenGL, его следует установить до объявления экземпляра приложения, чтобы убедиться, что все созданные контексты 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 почти всегда сообщает о необходимости активации доступности. На больших веб-страницах это может значительно замедлить скорость рендеринга.

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

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

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

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

Spec-Zone.ru

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