MIUI — отличная операционка и хороший пример того, до какой степени можно изменить Android, если захотеть превратить его в нечто большее. И как ни странно, по той же самой причине это плохая операционка, ломающая технологии, на которых построен Android, так, что системой уже нельзя пользоваться без ощущения дискомфорта.

Это колонка разочарования, так что я не буду перечислять достоинства MIUI. Это уже давно и не раз сделали другие люди. Я же хочу поговорить о том, что делает прошивку плохой, а в некоторых моментах не просто плохой, а непригодной к использованию. И дело тут вовсе не в привычке, а в особенностях самой системы.

 

Из Китая с любовью

Начнем с того, что MIUI — это продукт китайской компании, созданный в первую очередь для установки на китайские смартфоны производства Xiaomi. Что это означает на деле? А означает это следующее: в Китае законодательно запрещены сервисы Google, поэтому MIUI сильно завязана на сервисы Xiaomi и других китайских компаний. И все бы ничего, да вот только многие из этих сервисов в принципе не рассчитаны на применение за пределами Поднебесной.

Как результат, даже переключив язык прошивки на английский или русский, ты постоянно будешь сталкиваться с забавными ситуациями. Например, магазин тем здесь исключительно на китайском, что логично: заливают эти темы китайцы с китайским же описанием. Местный музыкальный и видеостор опять на китайском, ищи как хочешь. Китайский язык ты увидишь и в браузере, и в диалере (справочник), и даже на виджете погоды. И все эти приложения нельзя отключить.

Браузер и справочник номеров
Браузер и справочник номеров
Браузер и справочник номеров
Браузер и справочник номеров
Браузер и справочник номеров

Сервисов Google и магазина приложений в прошивке нет, но только в том случае, если речь идет о локальной китайской версии. Глобальные версии MIUI, предустанавливаемые на экспортные смартфоны Xiaomi, включают в себя сервисы и приложения Google, прекрасно переведены в том числе на русский и лишены привязки к «исключительно китайским» сервисам.

Проблема здесь только в том, что если ты скачаешь MIUI с 4PDA или XDA для смартфона другого производителя, то зачастую это будет именно китайская версия прошивки. Сервисы Google и Play Store придется ставить самому (с помощью специального приложения для MIUI либо с помощью приложения Open GApps), причем далеко не факт, что они заработают.

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

 

Больше прошивок, больше версий

Однако не только ориентированием на рынок сбыта различаются прошивки MIUI. Китайская и глобальная — это только вершина айсберга. Также ты можешь наткнуться:

  • на полуофициальную, не поддерживаемую Xiaomi глобальную версию прошивки для смартфонов Xiaomi. Она распространяется через сайт xiaomi.eu;
  • официальную китайскую версию прошивки для смартфонов других производителей. Ее можно найти на сайте en.miui.com;
  • неофициальную китайскую версию прошивки для смартфонов других производителей. Как ни странно, найти ее можно там же;
  • неофициальную российскую версию прошивки от miui.su. Собрана на базе китайской с дополнительным переводом, сервисами Google и с заменой фирменной клавиатуры для набора иероглифов на Google Keyboard;
  • неофициальную китайскую версию прошивки, собранную с помощью PatchROM. Найти можно на форумах. Отличается тем, что представляет собой стоковую прошивку для твоего аппарата, пропатченную так, чтобы она выглядела и работала как MIUI, плюс фирменные приложения MIUI (и все приложения, оставшиеся от стока).

Но и это еще не все. Значение имеет не только ориентация прошивки на рынок и источник, с которого ее можно скачать, но и ее версия. Причем совсем не в том смысле, в каком это значение имеет версия Android. К примеру, актуальная версия MIUI на момент написания этих строк — 8.3, версия которой 7.3.30, а версия Android, на которой она базируется, — Android 7.0 для смартфона Xiaomi Mi4S, Android 6.0 для смартфона Mi5S и Android 4.4, если речь идет о Redmi 1S.

Каково? Чтобы чуточку распутать этот клубок, скажу, что 7.3.30 — не совсем версия, а дата сборки. И да, прошивка выглядит и работает всегда одинаково независимо от лежащей в основе версии Android. Вот только если приложение требует Android 6.0 для своей работы, то на Mi5S ты сможешь его установить, а вот на Redmi 1S уже нет. И это при одинаковой версии MIUI.

 

Хаки и костыли — наше все

ОK, поговорим о более мирских вещах — об интерфейсе. Вне сомнений, это одна из лучших черт ОС. MIUI красива, функциональна и совершенно не похожа на стоковый Android. Почти все элементы оформления в ней переработаны — где-то идеи позаимствованы у iOS и Samsung TouchWiz, а где-то отражено собственное видение дизайнеров.

Но есть во всей этой красоте (или не красоте, кому как) проблемы. Первое, что ты заметишь, пользуясь MIUI, — это иконки приложений. Они явно выполнены по гайдлайнам Apple: квадратные с закруглением, одинакового размера, используют простые линии и фигуры, яркие. На первый взгляд — красиво.

На второй взгляд ты уже начинаешь видеть проблемы. MIUI не использует специальные иконки для стороннего софта, а вместо этого либо уменьшает оригинальную иконку и размещает ее внутри квадрата со скругленными углами, закрашивая сам квадрат различными цветами на основе не совсем понятного алгоритма, либо увеличивает ее и скругляет углы. В результате ты видишь на экране несколько хорошо проработанных иконок стоковых приложений и кучу иконок сторонних приложений, заключенных в разноцветные квадраты (часть из которых будут зелеными) либо обрезанных по краям.

Изящные иконки стоковых приложений vs цветное веселье из сторонних приложений
Изящные иконки стоковых приложений vs цветное веселье из сторонних приложений
Изящные иконки стоковых приложений vs цветное веселье из сторонних приложений
Изящные иконки стоковых приложений vs цветное веселье из сторонних приложений
Изящные иконки стоковых приложений vs цветное веселье из сторонних приложений

Второе: MIUI позаимствовала у iOS концепцию «живых иконок» (календарь и часы, например, показывают реальное время и дату), а также бейджи, то есть индикаторы количества уведомлений приложения рядом с его иконкой. Поэтому иконки уведомлений в строке состояния стали как бы не нужны, и разработчики от них избавились. Можно попытаться вернуть иконки, но они совсем не вписываются в переработанную строку состояния, причем не вписываются как раз иконки стоковых приложений.

Ну и на сладкое: фирменные элементы интерфейса MIUI использует только предустановленный софт. Весь остальной софт будет запускаться со стандартным дизайном Android: Material для нового и поддерживаемого софта, Holo для устаревшего софта и дизайном Android 2.3 для совсем древнего. Красота, да и только.

 

Больше разрешений для приложений!

Очень странная черта MIUI — система разрешений приложений. Как мы все знаем, в Android 6.0 появилась система запроса разрешений, которая позволяет юзеру управлять тем, к каким функциям смартфона приложение получит доступ, а к каким нет. Реализовано все это так же, как в iOS, — с помощью выводимого на экран диалога.

В Android 6.0 и выше все разрешения разбиты на семь классов (камера, микрофон, контакты и так далее), что позволяет не слишком спамить запросами: даже если приложение хочет получить доступ вообще ко всему, к чему только можно, кнопку «Разрешить» придется нажать не более семи раз.

Разработчики MIUI создали собственную систему разрешений еще до выхода Android 6.0. И работает она весьма оригинально. Например, если ты установишь Telegram, то получишь запрос разрешений только три раза: два раза при старте (чтение и модификация контактов) и еще один раз при попытке отправить фото (доступ к камере). Вроде бы ничего странного, вот только записывать аудио, получать информацию о местоположении и сохранять файлы на карту памяти Telegram сможет без всяких запросов и беспокойства пользователя.

Еще более интересной ситуация становится, если попытаться запустить приложение, вообще не рассчитанное на работу в Android 6.0. То есть способное работать в Android 6.0, но собранное для более ранней версии. Стандартный Android не применяет к таким приложениям систему разрешений (чтобы не вызвать их сбой), но MIUI поступает иначе.

Для примера возьмем AirDroid. Сразу после установки AirDroid уже будет иметь доступ к таким вещам, как информация о местоположении, IMEI, всем аккаунтам пользователя, камере, карте памяти и даже сможет управлять настройками. Но! Тебе необходимо самостоятельно выдать разрешение на чтение истории звонков, СМС и списка контактов.

Пользуясь другими приложениями, ты время от времени будешь получать запрос разрешения на подключение к интернету (причем далеко не всегда) или, например, возможности установить приложение по USB (и галочка «Больше не спрашивать» вполне может и не работать). В MIUI есть и многие другие типы разрешений, которых ты никогда не увидишь в Android.

Список разрешений AirDroid сразу после установки и запрос разрешения для доступа в интернет в сводке погоды
Список разрешений AirDroid сразу после установки и запрос разрешения для доступа в интернет в сводке погоды
Список разрешений AirDroid сразу после установки и запрос разрешения для доступа в интернет в сводке погоды
Список разрешений AirDroid сразу после установки и запрос разрешения для доступа в интернет в сводке погоды
Список разрешений AirDroid сразу после установки и запрос разрешения для доступа в интернет в сводке погоды

Как результат: система разрешений в MIUI вроде бы и есть, но работает она непредсказуемо и абсолютно несовместима с аналогичной системой из Android 6.0. Какие-то разрешения ты должен подтверждать, какие-то система выдаст сама, и все это без разделения на приложения, поддерживающие запрос разрешений, и приложения, не поддерживающие.

 

Скажем «нет» фоновой активности

Ну и наконец, самое вкусное: запрет на реинкарнацию фоновых служб — головная боль тысяч пользователей и разработчиков приложений. Вкратце суть в следующем: в Android любое приложение может запустить службу, которая будет работать в фоне даже тогда, когда само приложение свернуто или выгружено из памяти. Служба может быть запущена в режиме START_STICKY, что делает ее до какой-то степени бессмертной: даже если механизм освобождения памяти или таск-киллер ее прибьет, система тут же перезапустит службу.

На службы полагаются многие приложения, в том числе некоторые мессенджеры, их могут использовать системы защиты от кражи смартфонов, почтовые клиенты и системы синхронизации с облаком. Фоновая служба — частое решение проблемы тогда, когда приложение должно находиться в фоне и, например, ждать информацию от сервера. Также службы могут быть запущены внешним воздействием, например при приходе push-уведомления или при загрузке системы. MIUI полностью ломает эту систему, не позволяя службам перезапускаться. Отсюда появляется огромное количество неприятных ситуаций, когда люди не видят уведомлений о пришедших письмах, сообщениях и напоминаниях.

Это действительно серьезная проблема, и на первый взгляд может показаться странным, почему разработчики MIUI не предусмотрели возможность отключить эту систему. А они предусмотрели! Как ты думаешь, где находится интерфейс для отключения этой штуки? Вот здесь: «Безопасность → Разрешения → Автозапуск». Каково, а? Легко догадаться, зачем на самом деле нужен этот раздел настроек?

Интерфейс для отключения системы запрета на старт фоновых служб находится в приложении Security, в разделе Permissions → Autostart
Интерфейс для отключения системы запрета на старт фоновых служб находится в приложении Security, в разделе Permissions → Autostart
Интерфейс для отключения системы запрета на старт фоновых служб находится в приложении Security, в разделе Permissions → Autostart
Интерфейс для отключения системы запрета на старт фоновых служб находится в приложении Security, в разделе Permissions → Autostart
Интерфейс для отключения системы запрета на старт фоновых служб находится в приложении Security, в разделе Permissions → Autostart

Но и это еще не все. На самом деле нельзя просто взять и отключить функцию запрета на перезапуск служб, это надо делать для каждого приложения индивидуально и отключать для каждого только что установленного приложения. А если ты никогда этого не делал и у тебя не было никаких проблем с приходом уведомлений, значит, ты просто используешь глобальную версию прошивки (вот такая интересная фрагментация в мире MIUI).

И да, я отвечу на претензию тех, кто скажет, что именно такая функция и даже в еще более жесткой форме появилась в Android O. Отвечу так: в Android O система запрета на исполнение фоновых служб работает исключительно в отношении приложений, собранных для Android O, то есть тех приложений, которые уже были переведены на JobScheduler и потому будут работать корректно. Все уже написанные и опубликованные в Play Store приложения продолжат работать как раньше.

 

Выводы

Ни в коем разе не хочу разжигать холивар. MIUI весьма юзабельна, и многие считают ее более удобной, чем та же LineageOS. Цель этой колонки — всего лишь донести до тех, кто хочет установить MIUI или купить китайскую версию смартфона Xiaomi, информацию о том, с чем они могут столкнуться. Лично я нахожу MIUI неудобной, перегруженной функциональностью и слишком непредсказуемой.

5 комментариев

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

Windows 10 против шифровальщиков. Как устроена защита в обновленной Windows 10

Этой осенью Windows 10 обновилась до версии 1709 с кодовым названием Fall Creators Update …