Заметки по платформе Qt WebEngine
Компиляция Qt WebEngine из исходного кода
Статические сборки не поддерживаются.
Требования к компиляции модулей Qt 5 из исходного кода перечислены отдельно для каждой поддерживаемой платформы:
Кроме того, для сборки модуля Qt WebEngine требуются следующие инструменты:
Тесты для пропуска сборки Qt WebEngine расположены в репозитории qtwebengine в подкаталоге tools\qmake\mkspecs. Их можно найти, выполнив поиск по skipBuild.
Все платформы
На всех платформах требуются следующие инструменты:
- Python 2.7.5 или более поздняя версия. Python 3 не поддерживается.
- Bison, Flex
- GPerf
Windows
На Windows требуются Visual Studio 2017 и Windows 10 SDK.
Linux
На Linux требуется Clang или GCC версии 5 или выше. Поддерживаемые конфигурации linux-g++ и linux-clang.
Qt WebEngine требует pkg-config для обнаружения большинства своих зависимостей. Требуются следующие файлы pkg-config:
dbus-1fontconfig
Если Qt был сконфигурирован для xcb, также потребуются следующие файлы pkg-config:
libdrmxcompositexcursorxixrandrxscrnsaverxtst
Кроме того, необходимо установить пакеты разработки для khr и libcap.
macOS
На macOS требуются следующие компоненты:
- macOS 10.9 или более поздняя версия
- Xcode 5.1 или более поздняя версия
- macOS 10.10 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:
- Загрузите исходные коды qtwebengine.
- Из более ранней версии 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
Если необходимо установить новый профиль OpenGL для QSurfaceFormat, его следует установить перед объявлением экземпляра приложения, чтобы убедиться, что все созданные контексты 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 почти всегда сообщает о необходимости активации доступности. На больших веб-страницах это может привести к значительному замедлению скорости рендеринга.
Поэтому, начиная с 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/archives/qt-5.11/qtwebengine-platform-notes.html