Spec-Zone.ru › Qt 5.12

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

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

Linux

Для Linux требуется Clang или GCC версии 5 или выше. Поддерживаемые конфигурации: linux-g++ и linux-clang.

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.12 или более поздней версии
  • Xcode 8.3.3 или более поздней версии
  • macOS 10.12 SDK или более поздней версии

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

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

Поддерживается компиляция Qt WebEngine с более ранними версиями Qt (вплоть до последней LTS версии). Это означает, что Qt WebEngine 5.11 можно скомпилировать с Qt 5.9.x, Qt 5.10.x и Qt 5.11.

Для использования более ранней версии 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.

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

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

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

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

Qt WebEngine предоставляет поддержку изоляции по умолчанию для процессов рендеринга Chromium на Linux и macOS. Изоляция в настоящее время не поддерживается на Windows из-за ограничения в том, как настраивается зона безопасности и как она взаимодействует с процессом хоста, предоставляемым библиотеками Qt WebEngine.

На macOS нет специальных требований для включения поддержки изоляции.

На Linux ядро должно поддерживать функцию анонимных пространств (версия ядра >= 3.8) и функцию seccomp-bpf (версия ядра >= 3.5). Изоляция setuid не поддерживается и поэтому отключена.

Для явного отключения изоляции переменная среды QTWEBENGINE_DISABLE_SANDBOX может быть установлена в 1, или альтернативно, аргумент командной строки --no-sandbox может быть передан исполняемому файлу приложения пользователя.

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

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

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

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

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

Выпадающие окна в приложениях полноэкранного режима на Windows

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

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

Spec-Zone.ru

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