Что такое android 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 System Webview (ASWV).

Однако, не каждый имеет представление, для чего нужна данная программа.

Отвечая на вопрос что такое Android System Webview - необходимо вначале сказать, что приложение входит в список предустановленных.

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

К примеру, вы находитесь в своей любимой социальной сети и просматриваете пост.

Среди имеющейся информации присутствуют и различные ссылки. Так вот, чтобы перейти по любой из них - нет необходимости отдельно открывать .

Согласитесь, что это очень удобно и не отнимает много времени.

Взаимодействие с программами

Компонент webview интегрируется в такие популярные программы, как:

Кто хоть раз сталкивался с программой Android Studio - знает, что ASWV интегрирован в нее и является поистине незаменимым элементом.

С помощью данной студии возможно создать не только новостные и мессенджер-приложения, но и собственный браузер.

Правда, для этого необходимо обладать определенными знаниями.

К сожалению, наличием данной программы могут похвастаться не все телефоны, работающие под управлением .

Если версия операционки вашего устройства ниже 4.2.2 - то вы вряд ли обнаружите ASWV в своем арсенале.

Решается данная проблема обычным скачиванием из официального магазина Google.

Но перед тем, как установить ее себе на , трезво оцените возможности своего мобильного устройства.

Если у вас довольно старая модель - лучше воздержитесь от инсталляции.

По результатам проведенных тестирований можно с уверенностью сказать следующее:

  • приложение прилично потребляет ресурсы не только процессора и оперативной памяти, но и аккумуляторной батареи;
  • на слабых устройствах проявляется торможение системы из-за снижения производительности;
  • обновления для ОС Андроид четвертой версии давно перестали выходить, что негативно сказывается на корректной работе приложения.

Отсутствие обновлений негативно сказывается и на безопасности всей операционной системы в целом, так как присутствующие в старой версии Webview недоработки делают ее уязвимой для хакеров.

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

Чтобы это сделать - воспользуйтесь настройками каждого приложения в отдельности.

Так, для комфортной работы в , вы должны будете активировать опцию «Использовать внутренний браузер» .

Если вы решили сократить на своем телефоне численность установленных приложений - Android System Webview удалять не рекомендуется. От нее зависит корректная работа многих программ, и в первую очередь - социальных сетей. Удаление ASWV затронет отображение большинства информеров и мессенджеров, в связи с чем страницы с постами могут выглядеть сиротливо пустыми.

В том случае, когда удаление просто необходимо - , иначе произвести данную операцию не получится.

Получение необходимых прав

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

Среди всего разнообразия можно выделить Framaroot, приложение, интерфейс которого на русском языке.

Прежде всего понадобится его скачать.

Для запуска процесса установкой на своем мобильном устройстве запустите скачанный арк-файл и выберите необходимый вариант - Superuser или SuperSU.

Затем вам понадобится выполнить некоторые действия, чтобы вам присвоили статус администратора.

Выберите одного из предложенных персонажей.

После успешной установки на экране вашего мобильника будет отображаться смайлик. Если это произошло - значит установка прошла успешно. После этого понадобится перезагрузить телефон.

В случае, когда смайлик не появился - не отчаивайтесь - возможно эта программа попросту вам не подходит.

Подобных приложений довольно таки много, поэтому найти подходящее в Интернете не составит особого труда.

Без наличия прав вы сможете только остановить работу приложения обычным методом:

1. Для этого понадобится открыть настройки и выбрать пункт «Приложения» .

2. Нажимаете на название приложения и в открывшейся вкладке жмете кнопку «Остановить» . Перед этим неплохо было бы удалить имеющиеся обновления. Соответствующая кнопка расположена возле клавиши остановки.

3. После того, как обновления будут удалены - вы сможете полностью выключить выбранную программу.

4. Когда Webview будет отключена - она перестанет отображаться в основном меню и не будет потреблять системные ресурсы.

При необходимости избавиться от возникшей в ASWV ошибки понадобится выполнить следующие действия:

  • перейти в настройки мобильного устройства;
  • выбрать вкладку «Приложения» ;
  • найти нужное и открыть его;
  • открыть окно сведений о приложении и произвести удаление обновлений, очистку кэш и данных.

После данных манипуляций ошибка должна попросту исчезнуть.

Заключение

Приложение Android System Webview является важной составляющей операционной системы Андроид и позволяет просматривать веб-страницы, не покидая того или иного приложения.

Имеющийся в ней функционал используется многими сторонними программами ( , мессенджерами, и т.д.).

Часто выходящие обновления позволяют исправляют возникающие ошибки и повышают стабильность Webview.

Удаление данного приложения нежелательно, так как может привести к непредвиденным последствиям.

Зато ее качественная работа гарантирует вам максимальное удобство во время эксплуатации гаджета.

Изучая список приложений, которые установлены на вашем Android-телефоне, вы можете обнаружить приложение под названием Android System WebView. Очевидно, что данное приложение, является стандартным предустановленным приложением. Но, за что оно отвечает и можно ли его удалить? На эти вопросы мы постараемся ответить в данной статье.

Что такое Android System WebView

Android System WebView или ASWV – это компонент операционной системы Android, который работает на основе Chrome и отвечает за отображение веб-страниц в различных приложениях. Использование данного компонента позволяет приложением показывать пользователю содержание веб-страницы без ее открытия в стороннем приложении, например, без открытия веб-браузера Chrome.

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

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

Android System WebView присутствует в операционной системе Android достаточно давно. Но, как отдельное приложение он появился только в версии Android 5.0 Lollipop. С тех пор Android System WebView можно найти в магазине приложений Google Play Market и в списке установленных приложений на Android-смартфоне. Выделение данного компонента в отдельное приложение позволило Google более быстро закрывать уязвимости, которые в нем обнаруживались. Ведь теперь данный компонент можно обновить как обычное приложение, не обновляя всю операционную систему в целом. Позже, в Android 7.0 Nougat, данное приложение снова исчезло с Android-смартфонов. В операционной системе Android Nougat и более новых версиях Android в качестве WebView используется непосредственно сам браузер Google Chrome.

На прошедшей встрече 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. Дополнительно будет создана специальная система разрешений, без которых приложения не смогут получить доступ к какой-то критической для пользователя информации.