Заметки по платформе 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 вмешивается в инициализацию собственного 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