Открыть сервисСервис

Chrome Mobile WebView — системный компонент Android

Chrome Mobile WebView — системный компомпонент операционной системы Android, обеспечивающий отображение веб-содержимого внутри нативных приложений без запуска полноценного браузера. Представляет собой специализированный браузерный движок, встроенный в приложение в виде системного API (класс android.webkit.WebView), и управляется через механизм Google Play Services или встроенного пакета Android System WebView. Основан на движке Blink (как и Google Chrome) и Chromium-проекте.

Назначение и принцип работы

WebView позволяет приложению открывать веб-страницы, выполнять JavaScript, загружать CSS и мультимедиа в пределах собственного интерфейса, не переключая пользователя на отдельное приложение-браузер. Типичные сценарии использования:

  • отображение пользовательских соглашений, офер и инструкций;
  • встроенные формы авторизации (OAuth-окна, вход через социальные сети);
  • гибридные приложения (hybrid apps), где интерфейс реализован на HTML/CSS/JS, а нативная оболочка обеспечивает доступ к аппаратным функциям;
  • просмотр встроенной справки, новостных лент, рекламных блоков.

До Android 4.4 WebView базировался на движке WebKit, унаследованном от ранних версий iOS Safari. Начиная с Android 4.4 (KitKat) компонент перешёл на Chromium, что обеспечило поддержку современных веб-стандартов и синхронизацию поведения с настольным Chrome.

Эволюция компонента

ПериодДвижокМеханизм обновления
Android 2.3 — 4.3WebKitТолько через обновление ОС
Android 4.4 — 5.1Chromium (начиная с 30-й версии)Через Google Play Services
Android 6.0 — 7.1ChromiumЧерез Google Play Services
Android 8.0+ChromiumЧерез Google Play Store (пакет Android System WebView)

С Android 10 Google разрешила использовать в качестве провайдера WebView альтернативные браузеры на базе Chromium — например, Microsoft Edge, Mozilla Firefox (до перехода на GeckoView), Opera и Brave. Пользователь или производитель устройства может выбрать активный WebView-провайдер в настройках разработчика.

Отличие от Chrome Mobile

Chrome Mobile — полноценный браузер с собственным интерфейсом, адресной строкой, вкладками, синхронизацией аккаунта Google и расширениями. WebView — лишь движок без видимого пользователю интерфейса: страница отображается внутри контейнера, определённого приложением. Оба компонента построены на Chromium, поэтому часто демонстрируют схожее поведение при рендеринге, но:

  • WebView не поддерживает расширения и синхронизацию;
  • WebView использует отдельный профиль хранения данных;
  • обновления WebView выпускаются чаще и независимо от Chrome;
  • WebView может быть отключён или заменён альтернативой, Chrome — нет.

Проблемы безопасности и производительности

Исторически WebView считался слабым звеном безопасности Android. Версии до 4.4 не поддерживали изоляцию процессов и позволяли JavaScript-коду получать доступ к файловой системе. Начиная с Android 4.4 WebView получил песочницу, а с Android 10 — изоляцию рендеринга в отдельном процессе (site isolation).

Уязвимости в WebView критичны, поскольку компонент используется десятками миллионов приложений. Google регулярно выпускает патчи через Google Play Store, что позволяет обновлять WebView без обновления всей ОС — важное преимущество перед моделью «всё в прошивке».

Производительность WebView зависит от версии Chromium и настроек приложения. Распространённые проблемы:

  • утечки памяти при неправильном вызове destroy() у WebView;
  • блокировка главного потока при загрузке тяжёлых страниц;
  • кэширование данных, приводящее к рассинхронизации контента.

Развитие в России

В 2022—2023 годах ряд российских разработчиков и производителей устройств (в частности, на базе Aurora OS и Astra Linux) заявил о планах замены Google WebView на отечественные или независимые реализации на базе отраслевого форка Chromium. Это связано с необходимостью обеспечения информационной безопасности и снижения зависимости от сервисов Google. На практике большинство Android-устройств, продающихся в России, по-прежнему используют стандартный Android System WebView из Google Play.

Использование в разработке

Для интеграции WebView в Android-приложение используется XML-тег <WebView> или программное создание объекта WebView. Ключевые API:

  • loadUrl() — загрузка страницы;
  • WebViewClient — перехват навигационных событий;
  • WebChromeClient — обработка JavaScript-диалогов, прогресса загрузки;
  • evaluateJavascript() — вызов JS-кода из Java/Kotlin;
  • addJavascriptInterface() — привязка нативных методов к JS (источник ряда уязвимостей при неправильном использовании).

Google рекомендует для новых проектов использовать Jetpack WebView (часть AndroidX) или кроссплатформенные решения — Capacitor, Cordova, Flutter WebView.

Исторические факты

В 2013 году Google выделил WebView из состава ОС в отдельный компонент, обновляемый через магазин приложений, что стало ответом на критику медленного распространения патчей безопасности через производителей устройств. В 2015 году в WebView была обнаружена уязвимость, поразившая миллионы устройств до Android 5.1 — инцидент ускорил переход на модель независимых обновлений.

Источники:

  • Документация Android Developers (developer.android.com)
  • Chromium Projects — Android WebView
  • Google Play Store — Android System WebView
  • Отчёты Google Project Zero о безопасности WebView
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru