Что делает приложение android system webview. Android System Webview — что это, ошибки и решения

На прошедшей встрече AndroidDevs Meetup выступили несколько разработчиков из команды мессенджера ICQ. Мой доклад был посвящен Android WebView. Для всех, кто не смог приехать на встречу, публикую здесь статью по мотивам выступления. Пойду по верхам, крупными штрихами. Глубоких технических деталей и много кода давать не буду. Если вас заинтересуют подробности, по ссылке в конце поста можно скачать приложение, специально написанное в качестве иллюстрации, и все увидеть на примерах.

Вопросы и ответы

Вопрос: Есть проект CrossWalk - это сторонняя реализация WebView, позволяющая на старых устройствах использовать свежий Chrome. У вас есть какой-то опыт, вы пробовали его встраивать?
Ответ: Я не пробовал. На текущий момент мы поддерживаем Android начиная с 14-й версии и уже не ориентируемся на старые устройства.

Вопрос: Как вы боретесь с артефактами, которые остаются при прорисовке WebView?
Ответ: Мы с ними не боремся, пробовали - не получилось. Это происходит не на всех устройствах. Решили, что это не настолько вопиющая проблема, чтобы тратить на нее больше ресурсов.

Вопрос: Иногда требуется WebView вложить в ScrollView. Это некрасиво, но иногда требуется по заданию. Это не поощряется, даже где-то запрещается, и после этого возникают недостатки в работе. Но все равно иногда это приходится делать. Например, если вы сверху рисуете WebView, а под ним рисуете какой-то нативный компонент (который должен быть нативным согласно требованию), и все это должно быть выполнено в виде единого ScrollView. То есть сначала пользователь посмотрел бы всю страничку, а потом, если бы захотел, то долистал бы до этих нативных компонентов.
Ответ: К сожалению, не могу вам ответить, потому что я не сталкивался с такой ситуацией. Она довольно специфическая, и представить себе вариант, когда нужно WebView положить в ScrollView, мне сложно.

Вопрос: Есть почтовое приложение. Там сверху шапка с получателями и со всем остальным. Даже в этом случае не все будет гладко. У WebView возникают большие проблемы, когда он пытается определить свой размер внутри ScrollView.
Ответ: Можно попробовать отрисовать означенную часть UI внутри WebView.

Вопрос: То есть полностью перенести всю логику из нативной части в WebView и оставить эти контейнеры?
Ответ: Даже, может быть, логику переносить не надо, имеется в виду инжектирование Java-классов. Логику можно оставить и вызывать через инжектированный класс. В WebView можно перенести только UI.

Вопрос: Вы упоминали про игры в мессенджере. Они представляют собой web-приложения?
Ответ: Да, это web-страницы с JavaScript внутри WebView.

Вопрос: Вы все это делаете, чтобы просто не переписывать игры нативно?
Ответ: И для этого тоже. Но основная идея в том, чтобы дать сторонним разработчикам возможность создавать приложения, которые могут встраиваться в ICQ, и с помощью этого ICQ Web API взаимодействовать с мессенджером.

Вопрос: То есть в эти игры можно играть также через web-браузер на лэптопе?
Ответ: Да. Она может быть открыта в web-браузере, и мы иногда их прямо в нем и отлаживаем.

Вопрос: А если Intent, допустим, в Chrome прокинуть эту игрушку, какие проблемы тогда будут? Если не свою WebView писать, а воспользоваться услугами?
Ответ: Проблема в том, что в своем WebView мы можем предоставить API через инжектирование Java-класса, и с помощью этого API приложение сможет напрямую взаимодействовать с ICQ, отправлять ему различные команды. Допустим, команду на получение имени пользователя, на получение чатов, которые у него открыты, отправлять сообщения в чат непосредственно из ICQ. То есть из Chrome отправлять сообщения непосредственно в ICQ не получится. В нашем случае все это возможно.

Вопрос: Вы упомянули, что режете данные на куски по одному мегабайту. Как вы их потом собираете?
Ответ: Мы сейчас этого не делаем, потому что у нас нет такой потребности.

Вопрос: Хватает одного мегабайта?
Ответ: Да. Если картинки больше, то пытаемся их ужимать. Я сказал о том, что если такая потребность существует, то это может быть решением - разрезать и собирать потом в Java.

Вопрос: Как вы обеспечиваете безопасность работы приложений в песочнице? Правильно ли я понял, что из JavaScript приложения нужно вызывать инжектированные Java-классы?
Ответ: Да.

Вопрос: Как будет обеспечиваться в этом случае безопасность, запрещен ли доступ к каким-то системным функциям?
Ответ: Прямо сейчас, так как система еще довольно молодая, у нас в основном используются наши собственные web-приложения, и мы им полностью доверяем. В дальнейшем все приложения, которые будут поступать к нам, будут администрироваться, код будет просматриваться, для этого выделена специальная Security Team. Дополнительно будет создана специальная система разрешений, без которых приложения не смогут получить доступ к какой-то критической для пользователя информации.

Пользователи устройств на базе ОС Android, просматривая список установленного ПО, находят среди знакомого софта и системные приложения, о которых ничего не знают. Одна из таких программ – Android System WebView. Её можно обнаружить в числе запущенных приложений или, получив уведомление об обновлении. Иногда при ручной очистке с целью освобождения места в памяти устройства, неопытные пользователи сносят всё, что попадает под руку, при этом некоторые системные компоненты лучше не трогать во избежание нанесения ущерба системе. Конечно, такие приложения без root-прав не удалить, но даже остановка их работы может повлечь за собой неприятные последствия. Так, нежелательным является и удаление софта Android System WebView.

Назначение приложения Android system webview.

Закономерным желанием пользователя, впервые обнаружившего софт, будет узнать, что это за Android System WebView и какие задачи выполняет данный софт, а также можно ли удалять его. Программа, работающая на базе Chrome, предустановлена и является системным компонентом ОС Android, она применяется для обработки веб-контента внутри разных приложений, в результате чего нет необходимости перехода к браузерам. То есть, благодаря WebView содержимое сайтов может отображаться прямо в программах. Если взять в пример приложения соцсетей, то при просмотре новостной ленты и переходе по ссылкам вы не будете перенаправлены в браузер, а увидите контент, не покидая мессенджера. В этом и заключается суть функционирования данного инструмента, и теперь вы имеете представление, что такое Android System WebView. Системный софт по умолчанию устанавливается на устройства с Android 4.2.2 и выше. Если на девайсе его нет, например, вы удалили его, используя рут-доступ, не зная, что это за программа, то установить приложение можно из магазина Play Market, отсюда же скачиваются и обновления. При этом лучше использовать WebView, начиная с версии Android 5.0 ввиду задействования большого числа ресурсов, что грузит устройство многочисленными процессами (потребление памяти и пр. напрямую зависит от количества запущенных программ и игр). К тому же, поддержка продукта для ранних версий ОС прекращена.

Какие приложения используют Android System WebView

Рассматривая для чего нужен софт, чтобы было более наглядно, приведём в пример несколько программных продуктов, которые используют System WebView в качестве средства для просмотра интернет-контента в своей среде:

Это лишь небольшой список ПО, использующего WebView. Приложения погоды, социальных сетей , мессенджеры и многие другие имеют эту встроенную опцию. Разработчики софта могут добавить функциональность браузера в свой продукт, для чего нужно внедрить в него библиотеку WebView, установить компонент в макете и инициализировать в коде. Необходимо также включить поддержку JavaScript, чтобы страницы, где он реализован, корректно работали, и добавить разрешения на доступ к сети Интернет. Чтобы пользователи смогли открывать ссылки прямо внутри софта, потребуется установка WebViewClient.

Как включить Android System WebView

На Android 7 версии и выше служба неактивна по умолчанию. Эти задачи возложены на инструменты Google Chrome и встроенные средства программ. То есть, особой нужды в активации рассматриваемого софта нет, но если вы хотите, чтобы работал не Chrome, а WebView, первая служба отключается и включается Android System WebView, поскольку вместе они не функционируют. Выполнить активацию можно различными методами.

Способ первый:

  • В разделе «Приложения» находим Google Chrome и отключаем нажатием соответствующей кнопки.
  • Устанавливаем или обновляем Android System WebView из Play Market.
  • Теперь осталось запустить любой софт, использующий WebView, и служба будет запущена в автоматическом режиме. Допустим, перейдём из настроек девайса в раздел «Об устройстве» – «Юридическая информация» и выберем «Правовая информация Google», затем откроем любую ссылку.
  • Приложение WebView будет активировано, но при включении Chrome, опять отключится.

Способ второй:

Выполнить процедуру немного сложнее, к тому же не всегда возможно, но если первым способом не удалось подключить службу, делаем следующее:

  • Идём в настройки и в разделе «О телефоне» выбираем «Номер сборки».
  • Несколькими нажатиями активируем режим разработчика (жмём до получения соответствующего уведомления).
  • В разделе «Для разработчиков» находим «Сервис WebView».
  • Здесь можно будет выбрать средство для обработки веб-ссылок внутри приложений.

Возможные проблемы и способы их решения

Как правило, сервис исправно работает, но иногда всё же возможно возникновение ошибок. Поскольку WebView для версий Android до пятой версии больше не поддерживается, это спровоцировало появление уязвимостей в софте. Уведомления, сообщающие о сбое, могут появляться при запуске некоторых программ, игр или при использовании браузера. Исправление ошибки заключается в очистке данных приложения. Чтобы это осуществить выполняем следующее:

  • Переходим к настройкам девайса, выбираем «Приложения».
  • В перечне софта находим Android System WebView (ASW), нажимаем.
  • Здесь жмём кнопку «Очистить данные» и «Очистить кэш».

В некоторых случаях способ не работает. Можно попробовать также остановку службы и удаление обновлений, после чего загрузить полное обновление System WebView. Кроме того, не лишним будет проверить, достаточно ли памяти на устройстве, иногда может помочь перемещение приложения на SD-карту. Нередко пользователям надоедает всплывающее уведомление о необходимости обновления софта. Проблема исправляется просто:

  • Идём в магазин приложений Google Play Market и обновляем компонент ASW.
  • При повторении ошибки, что вероятно на устройствах с Android 7 и выше, следует обновить и Google Chrome.

Если все методы исправления сбоев в работе службы оказались бессильны, остаётся выполнить сброс к заводским настройкам, предварительно сделав резервную копию данных. Но это крайняя мера и чаще всего прибегать к таким действиям не приходится.

Как удалить приложение Android System WebView

Возможность удаления любого софта присутствует всегда, пусть и не явная, как в случае с системными компонентами. Увидев в процессах прожорливость Android System WebView, многие пользователи задаются вопросом, можно ли удалить сие приложение. В стандартном режиме системный софт не удалишь, так что, если цель стоит полностью избавиться от службы, придётся повозиться с получением root- прав, позволяющих проделывать с операционкой всё, что душе угодно. При этом рут-доступ не единственное решение, с помощью которого можно остановить деятельность программы.

Удалять System WebView крайне не рекомендуется, если у вас Android ниже седьмой версии, поскольку это повлечёт за собой ряд ошибок и сбоев. Службу используют многие приложения, поэтому на корректность их работы после удаления или отключения инструмента не стоит и рассчитывать. Кроме отсутствия возможности открытия встроенных ссылок внутри программ вы получите и другие сбои в системе, причём проблема может принять достаточно серьёзную форму, например, выразившись в виде циклической перезагрузки устройства. Теперь перейдём к вопросу, можно ли отключить службу Android System WebView, если рут-прав всё же нет, у вас операционная система седьмой версии или выше, а приложение вы не посчитали для себя полезным. В данном случае ПО возможно только остановить. Для этого выполняем следующие действия, применимые для остановки любого софта Android:

  • Идём в настройки устройства.
  • Переходим здесь к разделу «Приложения».
  • Выбираем из списка Android System
  • Жмём кнопки «Остановить», «Удалить обновления», затем «Очистить данные».
  • Эти действия остановят работу программы.

Мы не рекомендуем удалять системные приложения. Рут-права в неумелых руках могут навредить устройству, хотя и без них некоторые действия пользователя ещё более разрушительны, чем вирусы и способны нанести немалый ущерб системе.

Что же касается конкретно WebView, то если на вашем смартфоне поддерживается альтернативный софт, и вы решили пользоваться другим инструментом, выполняющим те же задачи, служба будет просто неактивна, так что переживать об использовании её ресурсов не стоит.

На прошедшей встрече AndroidDevs Meetup выступили несколько разработчиков из команды мессенджера ICQ. Мой доклад был посвящен Android WebView. Для всех, кто не смог приехать на встречу, публикую здесь статью по мотивам выступления. Пойду по верхам, крупными штрихами. Глубоких технических деталей и много кода давать не буду. Если вас заинтересуют подробности, по ссылке в конце поста можно скачать приложение, специально написанное в качестве иллюстрации, и все увидеть на примерах.

Вопросы и ответы

Вопрос: Есть проект CrossWalk - это сторонняя реализация WebView, позволяющая на старых устройствах использовать свежий Chrome. У вас есть какой-то опыт, вы пробовали его встраивать?
Ответ: Я не пробовал. На текущий момент мы поддерживаем Android начиная с 14-й версии и уже не ориентируемся на старые устройства.

Вопрос: Как вы боретесь с артефактами, которые остаются при прорисовке WebView?
Ответ: Мы с ними не боремся, пробовали - не получилось. Это происходит не на всех устройствах. Решили, что это не настолько вопиющая проблема, чтобы тратить на нее больше ресурсов.

Вопрос: Иногда требуется WebView вложить в ScrollView. Это некрасиво, но иногда требуется по заданию. Это не поощряется, даже где-то запрещается, и после этого возникают недостатки в работе. Но все равно иногда это приходится делать. Например, если вы сверху рисуете WebView, а под ним рисуете какой-то нативный компонент (который должен быть нативным согласно требованию), и все это должно быть выполнено в виде единого ScrollView. То есть сначала пользователь посмотрел бы всю страничку, а потом, если бы захотел, то долистал бы до этих нативных компонентов.
Ответ: К сожалению, не могу вам ответить, потому что я не сталкивался с такой ситуацией. Она довольно специфическая, и представить себе вариант, когда нужно WebView положить в ScrollView, мне сложно.

Вопрос: Есть почтовое приложение. Там сверху шапка с получателями и со всем остальным. Даже в этом случае не все будет гладко. У WebView возникают большие проблемы, когда он пытается определить свой размер внутри ScrollView.
Ответ: Можно попробовать отрисовать означенную часть UI внутри WebView.

Вопрос: То есть полностью перенести всю логику из нативной части в WebView и оставить эти контейнеры?
Ответ: Даже, может быть, логику переносить не надо, имеется в виду инжектирование Java-классов. Логику можно оставить и вызывать через инжектированный класс. В WebView можно перенести только UI.

Вопрос: Вы упоминали про игры в мессенджере. Они представляют собой web-приложения?
Ответ: Да, это web-страницы с JavaScript внутри WebView.

Вопрос: Вы все это делаете, чтобы просто не переписывать игры нативно?
Ответ: И для этого тоже. Но основная идея в том, чтобы дать сторонним разработчикам возможность создавать приложения, которые могут встраиваться в ICQ, и с помощью этого ICQ Web API взаимодействовать с мессенджером.

Вопрос: То есть в эти игры можно играть также через web-браузер на лэптопе?
Ответ: Да. Она может быть открыта в web-браузере, и мы иногда их прямо в нем и отлаживаем.

Вопрос: А если Intent, допустим, в Chrome прокинуть эту игрушку, какие проблемы тогда будут? Если не свою WebView писать, а воспользоваться услугами?
Ответ: Проблема в том, что в своем WebView мы можем предоставить API через инжектирование Java-класса, и с помощью этого API приложение сможет напрямую взаимодействовать с ICQ, отправлять ему различные команды. Допустим, команду на получение имени пользователя, на получение чатов, которые у него открыты, отправлять сообщения в чат непосредственно из ICQ. То есть из Chrome отправлять сообщения непосредственно в ICQ не получится. В нашем случае все это возможно.

Вопрос: Вы упомянули, что режете данные на куски по одному мегабайту. Как вы их потом собираете?
Ответ: Мы сейчас этого не делаем, потому что у нас нет такой потребности.

Вопрос: Хватает одного мегабайта?
Ответ: Да. Если картинки больше, то пытаемся их ужимать. Я сказал о том, что если такая потребность существует, то это может быть решением - разрезать и собирать потом в Java.

Вопрос: Как вы обеспечиваете безопасность работы приложений в песочнице? Правильно ли я понял, что из JavaScript приложения нужно вызывать инжектированные Java-классы?
Ответ: Да.

Вопрос: Как будет обеспечиваться в этом случае безопасность, запрещен ли доступ к каким-то системным функциям?
Ответ: Прямо сейчас, так как система еще довольно молодая, у нас в основном используются наши собственные web-приложения, и мы им полностью доверяем. В дальнейшем все приложения, которые будут поступать к нам, будут администрироваться, код будет просматриваться, для этого выделена специальная Security Team. Дополнительно будет создана специальная система разрешений, без которых приложения не смогут получить доступ к какой-то критической для пользователя информации.

Ряд пользователей современных гаджетов на базе ОС Android при просмотре списка предустановленных на устройстве программ могут наткнуться на приложение «Android System WebView» . Данное приложение создано программистами компании Google, и предназначено для просмотра веб-контента внутри других приложений. При этом ASWV не избавлено от различных ошибок, глюков и других проблем, и часто именно нестабильная работа данного приложения вынуждает пользователя искать подробную информацию о нём в сети. В этой статье я расскажу, что это за программа Android System Webview, познакомлю читателя с её особенностями, а также расскажу, как избавиться от ошибок, связанных с функционалом данного приложения.

Что такое Android System WebView

Как я писал выше, Android System WebView — это приложение, позволяющее встраивать просмотр веб-страниц внутри различных приложений ОС Андроид, без необходимости открывать для этого отдельное окно браузера. Функционал ASWV, по сути, напоминает мини-браузер, работая на базе технологии Chrome, и, подобно приложению Chrome, Android System WebView включено в базовый набор приложений ОС Андроид (примерно с версии Андроид 4.3 и выше) на современных смартфонах.

По отзывам пользователей, использование данного приложения различными зависимыми браузерами (например, Naked Browser) позволяет существенно сэкономить заряд батареи смартфона. Обычные же мобильные версии популярных браузеров типа Chrome или Firefox, работающие на своём собственном движке, потребляют значительно большие объёмы заряда аккумулятора.

Если вы разобрались с тем, что это Android System WebView и желаете загрузить его, лучше всего это сделать с Плей Маркета. На данный момент представлена самая свежая версия приложения 57.0.2987.88, при этом скачать свежую версию продукта можно с Play Market (ссылка).

Специалисты компании Google рекомендуют сначала очистить кешированные данные в телефоне — инструкция на VR-Boom.ru , а после этого обновить приложение Android System Webview, поскольку иногда находятся уязвимости, позволяющие злоумышленникам получать к нему доступ. Обновления позволяют устанавливать необходимые «заплатки», и тем самым воспрепятствовать злоумышленникам в реализации их задач.

Особенности работы Android System Webview

После того, как мы разобрались с тем, что это за приложение Android System Webview, перейдём к описанию особенностей данного приложения. Специалисты отмечают большую ресурсоёмкость данного приложения (потребляются существенные ресурсы памяти, что, в некоторых случаях, может замедлять нормальную работу системы).

Кроме того, компания Google по определённым причинам перестала выпускать обновления для данного приложения под более старые версии ОС Android (в частности, Android 4.3). Причиной этого называется банальное нежелание разработчиков пересматривать структуру программы («не хотим и не будем пересматривать код»), вследствие чего версия продукта, работающего на таких версиях Андроид, становится более уязвимой к действию вредоносного ПО.

Стоит ли удалять данное приложение

Стоит ли отключить Android System WebView? Категорически нет. Как я указывал выше, ряд мобильных приложений используют встроенные возможности Android System WebView для своей работы. В частности, функционал данного приложения используют такие программы как:

Потому остановка (а то и удаление данного приложения с помощью root-прав) крайне нежелательна, и может привести к различным сбоям в работе системы (у одного из пользователей удаление данного приложения привело к циклической перезагрузке его девайса).

Если Android System Webview глючит

Если вы сталкиваетесь с ошибками в работе данного приложения и сообщением «В приложении android system webview произошла ошибка» тогда рекомендую перейти в настройки вашего устройства, затем в «Приложения», найти там Android System WebView и тапнуть по нему. По переходу в сведения о приложении нажмите на «Остановить», затем на «Удалить обновления», «Очистить данные», «Очистить кэш».

Заключение

При рассмотрении темы программы стоит отметить, что приложение Android System Webview – это важный атрибут функционала ОС Андроид (примерно с версии Андроид 4.3), позволяющий осуществлять просмотр веб-контента внутри определённого приложения, без необходимости открывать для этого отдельное окно браузера. Его функционал востребован рядом сторонних программ (в частности, несколькими мобильными браузерами, мессенджером ICQ и др.), потому рекомендуется регулярно следить за его обновлениями, и ни в коем случае не удалять данное приложение с вашего устройства. Это гарантирует его стабильную работу, а вам — удовольствие от надёжного функционала вашего мобильного девайса.