Андроид плохой и хороший
В этой статье ничего не будет о багах и неудобствах чистого Android — некоего эталона, состоящего из AOSP и сервисов Google, который устанавливается в смартфоны линеек Android One, Google Pixel и смартфоны некоторых производителей (например, Motorola и Nokia). Такой Android мы назовем «хорошим»: нравятся тебе его особенности или нет, но именно так он был спроектирован. В сравнении с поделками производителей смартфонов «хороший» Android чаще бывает удачно оптимизирован и с большей вероятностью будет регулярно обновляться — по крайней мере, у тех производителей, которые сделали «чистый Android» своей маркетинговой фишкой.
Здесь и сейчас мы поговорим о том, как производители — те самые HTC, LG, Samsung и прочие — пытаются улучшить систему и что из этого получается.
Свистелки: благие намерения по-азиатски
Первым, что нас встретит при включении любого новенького флагмана, будет анимированная заставка, бут-анимация. Американские производители скромны: на iPhone и iPad в течение всей загрузки мы имеем счастье наблюдать лишь белое статичное яблоко. Смартфоны на Windows 10 Mobile радуют таким же статичным голубым логотипом Windows. Google значительно менее скромна, выводя веселую разноцветную анимацию, которая еще и отличается для разных версий Android.
Что объединяет заставки этих производителей? Нас не беспокоят лишними звуками.
«ЛА-ЛА-ЛА!» — кричат телефоны LG при включении. «УПСС-БУМЦ!» — возвещает нам о загрузке флагман HTC всей мощью динамиков Boom Sound. Самые разнообразные, но неизменно громкие трели издают смартфоны, дооснащенные самой первой свистелкой, отвечающей азиатским представлениям о прекрасном. И если у китайской Lenovo, маскирующейся под американскую Motorola, эту свистелку можно будет отключить, то смартфон LG или HTC, самопроизвольно перезагрузившийся посреди ночи, непременно уведомит об этом радостном событии сонного владельца.
Уведомления
В Android отлично продуманная и прекрасно реализованная система уведомлений, на голову превосходящая реализацию уведомлений в iOS. Казалось бы, что здесь можно улучшить? Увы, азиатские производители это сделать сумели. Каждое такое улучшение вызывает разрушительный эффект.
Начнем с HTC. По какой-то причине обозреватели повторяют друг за другом, что свежие поколения HTC Sense — это почти чистый Android, аккуратно улучшенный в нужных местах. Извините, дорогие обозреватели, но «улучшить» Android кривыми руками не получится. Вот что сделали программисты HTC с уведомлениями.
«Что-то после обновления постоянно начали звуковые уведомления приходить от приложений, хотя по умолчанию стоит без звука и на семерке все нормально работало», — жалуется пользователь. Далее следует развесистая инструкция, куда заходить и как отключать звук для каждой установленной и системной программы, а также для отдельных подкатегорий каждой программы. Результат — «Помогло, но не сильно — включения звука на смарте стали реже, но не пропали».
Смотрим на первый скриншот.
Что мы здесь видим? Самая обычная настройка звуков уведомлений из самого что ни на есть стандартного Android. Казалось бы, что здесь может пойти не так? Настроили звук уведомлений на бесшумный режим и наслаждаемся покоем; телефон побеспокоит нас звонками, но не будет пищать, кричать или свиристеть на всю комнату на каждое полученное письмо.
Прости, но разработчики HTC лучше знают, что тебе нужно. Как так — уведомления, да без звука? И «улучшают» Android, добавив свою собственную кривую надстройку дискретного управления уведомлениями. Теперь все (все!) твои приложения, сколько бы их ни было установлено на смартфоне, плевать хотели на беззвучный режим уведомлений, который ты выбрал в настройках, а контролируются чем-то вроде того, что показано на скриншоте ниже.
И если в стандартном Android даже те уведомления, для которых вдруг разрешен звук, проиграют бесшумное уведомление, то разработчики HTC решили иначе: для каждого уведомления будет проигрываться какой-то звук, никак не связанный с тем, что было выбрано в настройках. У тебя установлена сотня приложений? Будь добр пройтись по всем в настройках HTC и отключить звук для каждого из них. Установил новое приложение? Не забудь зайти в настройки уведомлений и отключить ему звук, иначе тебя может побеспокоить неприятный сюрприз.
Почему такая мелочь стоила такого количества букв? Да просто потому, что на собственном HTC U11 я убил больше полутора часов, пытаясь отрубить звуковые уведомления для всех приложений, — и все равно время от времени телефон подает голос! Честное слово, это «улучшение» — уже достаточная причина, чтобы избавиться от назойливого флагмана.
Скажешь, это баг и его исправят в будущей версии? Давай посмотрим. Android 8.0 с данным улучшением пришел на HTC U11 в декабре 2017-го. Январь, февраль, март… обновлений нет, как нет и внятного понимания, будут ли вообще устранять этот баг — или же это такая фича.
Кстати, поругав HTC, не могу не остановиться на оболочке LG, в которой вообще нельзя выбрать «беззвучный» тон для уведомлений! Сама мысль о том, что кому-то может не понравиться постоянный трезвон телефона, не посетила головы программистов LG.
Результат? Приходится извращаться, создавая файл с «пустым» звуком. А про звук начала и окончания зарядки, который невозможно отключить из настроек, я и вовсе молчу: телефон еженощно радует бодрым пиликаньем: «Ура! Я зарядился!»
А теперь вопрос на засыпку: думаешь, это такой баг? Нет! Это сознательное решение программистов (ну не дизайнеров UI же) из LG, кочующее из одной версии Android в другую. 5.0, 5.1, 6.0, 7.0 — везде одна и та же картина. Молодцы, здорово улучшили!
Совсем как iPhone, только легкий!
В HTC уведомления работают и выглядят именно так, как должны по замыслу разработчиков Android. А вот некоторые другие производители любят «делать красиво», уродуя стандартный дизайн Android и пытаясь сделать, «как в айфонах». Получается… получается очень плохо. Примерно как в китайских бумбоксах из девяностых с кучей мигающих лампочек и ярких цветов.
Вот так это выглядит у Huawei (справа — «чистый» Android):
А вот какой кошмар сделала небезызвестная LeEco:
А вот так представляют себе идеальный интерфейс Android 6.0 в LG. Очень крупные кнопки навигации, очень крупные иконки переключателей сверху, которые очевидно не влезли в размер, и уже без того улучшенные стандартные переключатели пришлось дополнительно улучшать при помощи горизонтальной прокрутки.
Чем плохи такие интерфейсы? Как и все свистелки-мигалки, подобные интерфейсы мало того что говорят о дурном вкусе («о вкусах не спорят» — не в эту оперу; вкусы у человека будут плохими и даже ужасными, если их не воспитывать с детства), так еще и ломают пользовательский опыт резкими переходами между ставшим уже классическим материальным дизайном Android и цветастым полупрозрачным изыском азиатских программистов.
Еще один момент, который часть производителей пытается сделать так, как сделано в iOS, — управление яркостью экрана. В свежих версиях Android при включении автоматического управления яркостью ползунок контролирует не яркость напрямую, а кривую зависимости яркости экрана от внешнего освещения. Это логично: достаточно один раз выставить ползунок в удобное положение, и о нем можно забыть навсегда.
Увы, но ряд производителей «улучшает» эту логику, привязывая ползунок яркости в авторежиме напрямую к уровню подсветки экрана. Так, например, сделали разработчики OnePlus (как всем известно, их прошивка OxygenOS — это как чистый Android, только лучше). В результате, если выбранные автоматикой уровни яркости не устраивают, ползунок приходится постоянно двигать туда-сюда. То, что именно так организовано управление яркостью в iOS, не спасает от приступов раздражения.
Говоря о OnePlus последних моделей, нельзя не упомянуть и еще одно важное «улучшение». В компании решили добавить аппаратный переключатель режимов уведомлений, сделав его «как в iPhone, только лучше». Трехпозиционный переключатель в OnePlus 5 и 5T позволяет удобно и быстро переключаться между звуковыми и беззвучными режимами уведомлений. Казалось бы, удобно! Увы, совсем нет: китайские программисты не сумели осилить логику переключения режимов уведомлений Android и полностью выпилили из прошивки такую полезную вещь, как автоматическое включение режима «не беспокоить» по расписанию и по событиям (например, по важным встречам в календаре). Пользователю предлагается перенестись назад в те благословенные времена, где не было умной электроники, а было много железных тумблеров. Хочешь бесшумный режим на ночь? Переключи тумблер! Забыл переключить и тебя разбудила пришедшая рано утром рекламная SMS? Не надо винить рукастых программистов из Китая, просто в следующий раз не забывай перещелкнуть тумблер.
Оптимизация
За что я люблю смартфоны Pixel — так это за идеальную, просто образцово-показательную оптимизацию. При том что первое поколение Pixel использовало процессоры с зарезанными частотами и комплектовалось медленной по стандартам 2016 года памятью eMMC (остальные флагманы выходили на более шустрой UFS 2.0), смартфоны от Google работают идеально плавно, как по маслу. Нет лагов и подергиваний анимаций, нет неожиданных перегревов, нет ужасной неторопливости после того, как смартфон «просыпается» из состояния глубокого сна. Приложения запускаются с предсказуемой скоростью и работают предсказуемо плавно. Честно говоря, именно четкость и плавность работы Pixel — то, чего стало заметно не хватать на последних версиях iOS.
Сравнивая Pixel первого поколения с псевдофлагманом HTC U Ultra (Snapdragon 821, UFS 2.0) невозможно не заметить, что смартфон от HTC: а) перегревается на простейших задачах и б) подтормаживает и подлагивает, оставляя ощущение, что процессор работает из последних сил. Просыпаясь из состояния глубокого сна, первые несколько секунд U Ultra нетороплив, как сонная черепаха (вплоть до того, что шторка уведомлений открывается рывками, да и то после заметной задержки). Что это — проблема Android? Нет: на Pixel, работающем на похожем железе, ничего подобного не наблюдается. Просто плохая, очень плохая оптимизация.
Подобных примеров я могу привести массу. LG G Flex 2 — перегрев, причем зачастую в состоянии простоя, когда устройство вдруг начинало что-то считать с выключенным экраном, обжигая карман. Об утечках заряда из-за непобежденных wakelock’ов ядра, приводящих к аномальному поведению смартфона в простое, можно писать серию статей; справиться с такими вещами невозможно даже с рут-доступом, поможет только исправление от производителя или кастомная прошивка.
Критические ошибки и недоделки
Как тебе понравится, если твой телефон превратится в «кирпич» после очередного обновления? Ситуация достаточно редкая для большинства производителей, но, увы, встречающаяся. Впрочем, если баг затрагивает небольшое количество пользователей и лишь время от времени — серьезного ущерба репутации производителя он не принесет. А вот если все устройства после получения ОТА вдруг начинают блокироваться — это уже не очень хорошо.
Именно такое «улучшение» внесли в Android горе-разработчики OnePlus. С выходом Android 8 что-то пошло не так, и абсолютно все пользователи устройств OnePlus 5 с разблокированными загрузчиками, установившие первое, второе, а потом и третье обновление (их выпускали с перерывом меньше недели), получили ошибку расшифровки данных: телефоны не загружались. Сброс данных и последующее восстановление из облачной резервной копии помогали — ровно до следующего обновления.
Качество драйверов
О качестве драйверов в Android можно писать много хорошего, но всегда ли виноват производитель? Ведь некоторые драйверы поставляет производитель чипсета (к примеру, Qualcomm), а некоторые — например, к модулю видеокамеры — и вовсе сторонние компании-производители. Удивительно, что эта «сборная солянка» вообще работает… впрочем, стоп: а работает ли?
Возьмем для примера ту же компанию OnePlus, программисты которой допустили критическую ошибку, не учтя особенностей шифрования восьмой версии Android. Компания установила «революционный» модуль камеры, на матрице которого присутствуют датчики фазовой фокусировки. Маркетологи глубоко вдохнули и анонсировали OnePlus 5 под лозунгом «Clearer photos». Казалось бы, что может пойти не так?
Давай посмотрим на вот эту фотографию:
Что это? Почему небо в горошек? Как оказалось, в OnePlus сэкономили, заказав у SONY модуль с драйверами, но решив не оплачивать дальнейшую разработку и исправление найденных ошибок. В результате драйверы SONY не учитывают фазовые точки фокусировки, которые и выглядят на снимках как бодрый горох. Очевидно, такие снимки невозможно было бы продать как «clearer photos», и программистам OnePlus была поставлена задача замаскировать проблему. Что они успешно и проделали, включив запредельные настройки шумоподавления, вместе с «горохом» фазовых точек съедающих и все мелкие детали на снимке. Проблема решена!
Думаешь, единичный случай? Ничего подобного: с тем же модулем, с теми же драйверами и ровно с теми же проблемами полгода спустя компания выпускает второй телефон, OnePlus 5T. Наступили на те же грабли после долгой и громкой ругани пользователей? Какая разница, если и так купят!
Почему смартфоны с Android работают медленнее после обновлений
О качестве драйверов мы уже рассказали. Именно драйверы могут стать причиной плохой работы устройства. Особенно явно это становится заметно тогда, когда производитель решает сэкономить и обновляет версию Android, оставляя без изменения оригинальные драйверы.
Как это возможно? Вплоть до Android 8 с его Project Treble каждая новая версия Android включала ряд изменений в API, заставляя производителей чипсетов выпускать новые версии драйверов для крупных обновлений системы. Выпуск драйверов не бесплатен, и производителям приходилось платить за обновленный код — или по факту, или в рамках заключенного контракта при закупке микросхем. Но что, если производитель не хочет оплачивать новые драйверы, а обновлять систему приходится? В таких случаях часто прибегают к программной прослойке, транслирующей новые вызовы API к той версии API, которую поддерживают старые драйверы. Вообще говоря, так делать неправильно; такой подход явно ограничивает и производительность, и совместимость системы, часто не дает доступа к новым возможностям свежей версии Android. Тем не менее этот подход весьма популярен среди разработчиков кастомных прошивок — хотя бы потому, что свежих драйверов может просто не быть (классический пример из недавних — выпуск кастомных прошивок с Android 7, 8 и 8.1 для смартфонов LeEco, которые не получали обновлений базовой версии Android 6.0 с момента выхода).
К сожалению, отдельные производители используют ровно тот же подход. Смартфоны OnePlus 5, 5T были выпущены с Android 7 на борту. Обновление до Android 8 использовало старые драйверы и программную прокладку (shim).
Опять же, думаешь — единичный случай, да еще и у маргинальной китайской компании? А если я скажу, что ровно тем же самым балуется крупнейший производитель смартфонов на Android — компания Samsung, да еще и не для чьих-то там чипов, а для собственных чипсетов Exynos?
Samsung и обновления
Для начала — статья: Samsung, Exynos and AOSP Explained: A Story of Betrayal.
В этой статье разработчики очень подробно и детально описывают, как именно в Samsung все, что можно сделать неправильно, сделано неправильно. В частности, Samsung часто использует программные прослойки для трансляции API при обновлении версий Android. После многочисленных обновлений изменения накапливаются, программные прокладки становятся все толще, а производительность — все хуже. Именно из-за многочисленных прослоек оболочка от Samsung со временем начинает работать из рук вон плохо даже на мощнейших устройствах. Это происходит вовсе не потому, что Samsung их как-то специально искусственно замедляет; просто иначе они не умеют.
Качество кода у Samsung
Мы обсудили свистелки и исковерканный UI, отсутствие оптимизации и низкое качество драйверов. Как еще можно испортить Android? Оказывается, легко. Достаточно просто быть Samsung.
Если многие производители делают софт и драйверы из подручного материала и палок, то программистам Samsung палок не завезли. На выходе получается оболочка, умудряющаяся заметно подтормаживать и подлагивать на процессоре, мощность которого превосходит CPU ультрабуков.
Наверное, ты сейчас думаешь: ну конечно, в Samsung все дураки, один автор статьи такой умный! Все или не все, но уровень программистов в Samsung уж точно ниже нулевой отметки. Вспомним историю с собственной разработкой компании, ОС Tizen, о которой писали буквально следующее:
Возможно, это худший код из тех, что мне довелось видеть. Все ошибки, которые можно было допустить, были допущены. Очевидно, что код писал или проверял кто-то, кто ничего не понимает в безопасности. Это все равно, что попросить школьника написать для вас программное обеспечение.
Источник
Конечно же, в Samsung не могли не отреагировать на такое заявление. После того как результаты исследования были опубликованы на Motherboard, компания Samsung начала работу над исправлениями. Результат впечатляет: код Tizen больше не «худший в истории». Теперь это просто ужас, но не ужас-ужас.
Да, но при чем здесь Tizen, ведь говорим-то мы об Android? И действительно, та часть ПО Samsung, которая написана специалистами Google, вполне работоспособна. Проблема же в том, что Samsung стремится максимально переписать, переделать ОС от Google, заменив все, что можно, программами собственного изготовления, переделав систему как визуально, так и изнутри. Результат? Лаги, подтормаживания, аляповатые и непоследовательные визуально-графические решения в интерфейсе и многочисленные баги.
А приложения-дубликаты? Когда я покупал свой первый смартфон на Android, я сразу запутался. Почему есть «контакты» и «контакты»? Зачем два разных браузера? Почему есть «часы» и «часы»? Для чего два почтовых клиента? Со временем уважающие себя производители перестали включать приложения собственной разработки, дублирующие основную функциональность Android. Но не Samsung, упорно вставляющая собственный веб-браузер (зачем? Он что, умеет переводить страницы с иностранных языков или синхронизировать пароли с облаком Google?), собственный почтовый клиент и массу других утилит собственной разработки.
А знаменитая кнопка Bixby, случайное нажатие которой активирует ассистента? Отключить эту кнопку можно, но для этого нужно сначала настроить Bixby, а для этого — скачать и установить множество мусорных программ от Samsung, о которых я уже рассказывал.
Отдельно отмечу потрясающую находку Samsung в области безопасности.
В любом другом смартфоне, сертифицированном Google, для разблокирования загрузчика нужно сначала разрешить OEM Unlocking в настройках, потом перегрузиться в fastboot, разблокировать загрузчик командой fastboot oem unlock или подобной — и сразу же лишиться всех данных. Уничтожение данных при разблокировании загрузчика — важнейший элемент безопасности, позволяющий защитить данные от несанкционированного доступа через рут или кастомное рекавери.
В Samsung (по крайней мере, в модели Galaxy S8) разблокирование загрузчика делается так: разрешить OEM Unlocking в настройках и… и все. Можно загружаться в кастомное рекавери, ставить рут, извлекать данные. Зияющая дыра в безопасности, оставленная как будто специально, — причем страдают от нее вовсе не любители поставить рут или кастомную прошивку, а самые обычные пользователи, данные которых могут быть запросто слиты с использованием разблокированного загрузчика.
Если после всего перечисленного ты все равно считаешь вариант Android от Samsung «нормальным» — мне нечего добавить.
Обновления
Хорошая операционная система обновляется быстро, четко и по расписанию. Apple iOS уже давно считается эталоном в отношении обновлений, но есть и другие производители, которые прекрасно обновляют свои устройства. Для начала посмотрим на эту табличку (источник):
Как видишь, Apple и Microsoft обновляют свои устройства в течение длительного срока, регулярно и своевременно. Более того, Microsoft продолжает обновлять смартфоны на Windows 10 Mobile — даже те, которые были выпущены сторонними производителями! — несмотря на отказ от развития платформы. Такая политика достойна уважения, ведь подавляющее большинство производителей смартфонов на Android обновляет свои модели по принципу: «Будет хорошо продаваться — может, когда-то и обновим. Нет — тихо забудем».
Вот, к примеру, HTC. Не самое дешевое устройство HTC U Ultra (Snapdragon 821) уже ровно год работает на все той же версии Android 7.0, с которой оно вышло в продажу. Обновлений до промежуточных версий Android у HTC не предусмотрено. Последний патч безопасности для U Ultra был в ноябре, а рассылка Android 8.0 (спустя полгода после выхода этой версии ОС) то начинается, то снова прекращается из-за найденных ошибок.
- Обновление до Android 8.0 для текущего флагмана (U11): 99 дней
- Обновление до Android 8.0 для предыдущего флагмана (HTC 10): 180 дней
- Информация об обновлениях: плохо (только список устройств, которые получат обновление)
- Результат: плохо
Несколько лучше обстоят дела у OnePlus:
- Обновление до Android 8.0 для текущего флагмана (5/5T): 137 дней
- Обновление до Android 8.0 для предыдущего флагмана (3/3T): 91 день
- Информация об обновлениях: средне (форум, открытые бета-версии)
- Результат: противоречивый
Motorola когда-то являла собой пример компании, которая не только поддерживала свои устройства в течение длительного времени, но и быстро их обновляла до актуальных версий Android благодаря использованию чистой версии системы.
- Обновление до Android 8.0 для текущего флагмана (Moto Z2 Force): 124 дня
- Обновление до Android 8.0 для предыдущего флагмана (Moto Z): до сих пор нет; больше 200 дней
- Информация об обновлениях: плохо (только список устройств, которые получат обновление)
- Результат: неудовлетворительно
LG печально известна своей неторопливостью. Еще бы: обновить настолько сильно «улучшенную» оболочку — это сколько работы улучшателям!
- Обновление до Android 8.0 для текущего флагмана (V30): 166 дней
- Обновление до Android 8.0 для предыдущего флагмана (G6): до сих пор нет; больше 200 дней
- Информация об обновлениях: плохо
- Результат: неудовлетворительно
А как обстоят дела у Samsung? Крупнейший производитель смартфонов с Android оказался и самым неторопливым среди конкурентов.
- Обновление до Android 8.0 для текущего флагмана (S8): 172 дня
- Обновление до Android 8.0 для предыдущего флагмана (S7): до сих пор нет; больше 200 дней
- Информация об обновлениях: плохо
- Результат: неудовлетворительно
Samsung — самая неторопливая? Подожди, мы еще не видели BlackBerry! Обновляемость устройства на Android никак не зависит от именитости компании, громких обещаний или цены устройства. Компания BlackBerry, которая обещала двухлетнюю поддержку для DTEK60 (между прочим, Snapdragon 820 и совсем не божеская цена), с момента выхода устройства в 2016-м выпустила обновлений Android… ноль. А что с двухлетней поддержкой? Видимо, имелись в виду исключительно патчи безопасности.
- Обновление до Android 8.0 для текущего флагмана: до сих пор нет (больше 200 дней)
- Обновление до Android 8.0 для предыдущего флагмана: никогда
- Обновление до Android 7.0 для предыдущего флагмана: никогда
- Информация об обновлениях: очень плохо (нет полного списка устройств, которые получат обновление)
- Результат: хуже некуда
А есть ли производители, которые аккуратно обновляют Android? Да, их два: Google и Nokia. Про Google можно особо не говорить: основная фишка их устройств как раз в получении обновлений напрямую от производителя.
Обновления Android от Google:
- Обновление до Android 8.0 для текущего поколения устройств: 9 дней (0 дней для участников бета-тестирования)
- Обновление до Android 8.0 для предыдущего поколения: 18 дней (0–18 дней для участников бета-тестирования)
- Информация об обновлениях: хорошо (публичные бета-версии через ОТА)
- Результат: отличный
Еще одна компания, регулярно обновляющая версии Android (по крайней мере, на флагманах), — «новая» Nokia под управлением HMD Global. У компании пока всего один флагман, выпущенный на предыдущей версии Android, и статистику мы еще не накопили. Тем не менее первоначальный результат обнадеживает.
Обновления Android от Nokia:
- Обновление до Android 8.0 для текущего флагмана: 90 дней
- Обновление до Android 8.1 для текущего флагмана: 58 дней
- Информация об обновлениях: хорошо
- Результат: хороший
Заключение
В хорошей мобильной ОС прекрасно все: и драйверы, и внешний вид (даже если внешний вид системы — вопрос вкуса, то последовательность в использовании выбранной концепции интерфейса уже вполне объективный показатель). Разумеется, очень важна плавность работы. Немаловажны и вопросы безопасности, поддержки и регулярных обновлений со стороны производителя. Именно такой пользовательский опыт предлагает Google в своих линейках Pixel и Pixel 2.
К сожалению, у других производителей дела обстоят далеко не так радужно. Исковерканные, безвкусные вариации пользовательских интерфейсов (и я сейчас не о дизайне домашнего экрана — лаунчер-то заменить легко), азиатские свистелки-пищалки, «улучшенные» уведомления, которые физически невозможно заставить замолчать, зияющие дыры в безопасности, оставленные будто бы нарочно, отвратительного качества драйверы, которые через программные прокладки будут использоваться снова и снова в новых версиях Android — при условии, что эти новые версии вообще будут… Все эти вещи — отличный повод поругать Android.