Spec-Zone.ru › Qt 5.13

Заметки по платформе 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 вмешивается в инициализацию собственного sandboxing 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 по умолчанию следует установить до объявления экземпляра приложения.

Поддержка sandboxing

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

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

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

Для явного отключения sandboxing можно установить переменную среды 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 приложения, отображающие полноэкранное представление веб-движка, не смогут корректно отображать всплывающие окна или другие окна верхнего уровня. Причина и решение проблемы описаны в Fullscreen OpenGL Based Windows и QWindowsWindowFunctions::setHasBorderInFullScreen.

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

Spec-Zone.ru

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