Заметки к платформе 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.
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-1fontconfig
Если Qt был настроен для xcb, также требуются следующие файлы pkg-config:
libdrmxcompositexcursorxixrandrxscrnsaverxtst
Кроме того, необходимо установить пакеты разработки для 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:
- Загрузите исходные коды 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 на 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