Вчера многие пользователи Android устройств успели серьёзно понервничать. Дело в том, что после обновления одного из системных компонентов, большинство приложений перестали запускаться. Так как на смартфонах постоянно что-то обновляется в фоновом режиме, то даже искушённым пользователям не сразу удалось связать очередное обновление компонента WebView и вылеты при старте многих популярных программ. Ведь при этом не показывалось синих экранов или хотя бы просто диалоговых окон, сообщающих о том, что что-то пошло не так.
Перестали работать продукты выпущенные как самим Гуглом, вроде Gmail, так и сторонними разработчиками. Все потому, что WebView используется очень многими приложениями: от казуальных игр и соцсетей до профессиональных инструментов и платёжных сервисов вроде Samsung Pay. Фактически, у большинства пользователей, которые успели получить это обновление, смартфоны на несколько часов утратили заметную часть своих возможностей. Если судить по отзывам в магазине Google Play, то для многих это стало крайне неприятной ситуацией. Понятное дело, что в первые часы весь гнев обрушился на разработчиков приложений, а не на Гугл. Официальное объяснение причин произошедшего и рекомендация удалить обновления WebView (или наоборот, установить новейшую версию) появились спустя несколько часов.
И хотя сам инцидент вроде как исчерпан, он стал хорошим поводом для того чтобы вспомнить о некоторых важных вещах. Как о философских, вроде того, насколько мы стали зависеть от смартфонов и сервисов, к которым они предоставляют доступ, так и о более конкретных, вроде того, какую ответственность ИТ-гиганты несут перед своими клиентами. Любой кто хоть раз читал лицензионные соглашения прекрасно понимает, что эта ответственность де-факто односторонняя: потребителя перед поставщиком. И это даже в том случае, если вы крупная компания, которая платит серьёзные деньги. В условиях продолжающейся монополизации рынка не стоит забывать об этом ни на минуту.
О том, что подобное может случится, и с довольно высокой степенью вероятности повторится ещё раз, говорят довольно давно. Android вообще излюбленная цель критики независимых разработчиков. При этом Гуглом движут благие намерения, а именно желание сочетать максимальную гибкость и дружественность к всё тем же разработчикам.
Ведь как появился этот самый WebView? По сути, это движок браузера Chrome, который вынесен в отдельный системный компонент. Сторонние приложения могут использовать его с помощью API, чтобы отображать веб-контент внутри приложений, без запуска отдельного браузера. Многие пошли ещё дальше, и пользуются им для того, чтобы реализовать часть интерфейса с помощью HTML или даже использовать JavaScript-код. Стильно, модно, молодёжно и позволяет сэкономить на разработке. Ну, как говорится, сами себе злобные буратины.
Проблема в том, что сбой WebView автоматически приводит к краху приложений которые его используют. Собственно, именно так и произошло вчера. Но во многих случаях разработчики вынуждены использовать WebView даже там, где использование внешнего браузера было бы более уместным. Например, в ситуациях, когда нужно просто показать веб-страницу, без какого-либо взаимодействия с ней. Это очень частый случай, но беда в том, что в последних версиях Android Гугл ограничивает доступ сторонних программ к браузеру Chrome. Конечно, можно просто открывать ссылку в новом окне, но это неудобно для пользователя и в ряде случаев чревато выгрузкой вашего приложения в пользу Chrome.
Простого выхода из этой ситуации нет, возможно, что в будущих выпусках Android будут найдены какие-то решения. И хоть пример Microsoft показывает, что достижение монопольного положения странным образом сказывается на качестве выпускаемых обновлений, мы все равно будем надеяться на благосклонность Вишну к программистам работающим над WebView и другими компонентами Android.