![](/news:img/358/tn:index/fn:img/w:640/h:700/null/img.png)
Страх и ненависть MIUI. Колонка Евгения Зобнина
Содержание статьи MIUI — отличная операционка и хороший пример того, до какой степени можно изменить Android, если захотеть превратить его в нечто большее. И как ни странно, по той же самой причине это плохая операционка, ломающая технологии, на которых построен Android, так, что системой уже нельзя пользоваться без ощущения дискомфорта.Это колонка разочарования, так что я не буду перечислять достоинства MIUI. Это уже давно и не раз сделали другие люди. Я же хочу поговорить о том, что делает прошивку плохой, а в некоторых моментах не просто плохой, а непригодной к использованию. И дело тут вовсе не в привычке, а в особенностях самой системы.
Из Китая с любовьюНачнем с того, что MIUI — это продукт китайской компании, созданный в первую очередь для установки на китайские смартфоны производства Xiaomi. Что это означает на деле? А означает это следующее: в Китае законодательно запрещены сервисы Google, поэтому MIUI сильно завязана на сервисы Xiaomi и других китайских компаний. И все бы ничего, да вот только многие из этих сервисов в принципе не рассчитаны на применение за пределами Поднебесной.
Как результат, даже переключив язык прошивки на английский или русский, ты постоянно будешь сталкиваться с забавными ситуациями. Например, магазин тем здесь исключительно на китайском, что логично: заливают эти темы китайцы с китайским же описанием. Местный музыкальный и видеостор опять на китайском, ищи как хочешь. Китайский язык ты увидишь и в браузере, и в диалере (справочник), и даже на виджете погоды. И все эти приложения нельзя отключить.
![](/data:img/453/tn:index/fn:img/null/img.png)
![](/data:img/454/tn:index/fn:img/null/img.png)
Браузер и справочник номеров
Сервисов 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 не использует специальные иконки для стороннего софта, а вместо этого либо уменьшает оригинальную иконку и размещает ее внутри квадрата со скругленными углами, закрашивая сам квадрат различными цветами на основе не совсем понятного алгоритма, либо увеличивает ее и скругляет углы. В результате ты видишь на экране несколько хорошо проработанных иконок стоковых приложений и кучу иконок сторонних приложений, заключенных в разноцветные квадраты (часть из которых будут зелеными) либо обрезанных по краям.
![](/data:img/455/tn:index/fn:img/null/img.png)
![](/data:img/456/tn:index/fn:img/null/img.png)
Изящные иконки стоковых приложений 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.
![](/data:img/457/tn:index/fn:img/null/img.png)
![](/data:img/458/tn:index/fn:img/null/img.png)
Список разрешений AirDroid сразу после установки и запрос разрешения для доступа в интернет в сводке погоды
Как результат: система разрешений в MIUI вроде бы и есть, но работает она непредсказуемо и абсолютно несовместима с аналогичной системой из Android 6.0. Какие-то разрешения ты должен подтверждать, какие-то система выдаст сама, и все это без разделения на приложения, поддерживающие запрос разрешений, и приложения, не поддерживающие.
Скажем «нет» фоновой активностиНу и наконец, самое вкусное: запрет на реинкарнацию фоновых служб — головная боль тысяч пользователей и разработчиков приложений. Вкратце суть в следующем: в Android любое приложение может запустить службу, которая будет работать в фоне даже тогда, когда само приложение свернуто или выгружено из памяти. Служба может быть запущена в режиме START_STICKY, что делает ее до какой-то степени бессмертной: даже если механизм освобождения памяти или таск-киллер ее прибьет, система тут же перезапустит службу.
На службы полагаются многие приложения, в том числе некоторые мессенджеры, их могут использовать системы защиты от кражи смартфонов, почтовые клиенты и системы синхронизации с облаком. Фоновая служба — частое решение проблемы тогда, когда приложение должно находиться в фоне и, например, ждать информацию от сервера. Также службы могут быть запущены внешним воздействием, например при приходе push-уведомления или при загрузке системы. MIUI полностью ломает эту систему, не позволяя службам перезапускаться. Отсюда появляется огромное количество неприятных ситуаций, когда люди не видят уведомлений о пришедших письмах, сообщениях и напоминаниях.
Это действительно серьезная проблема, и на первый взгляд может показаться странным, почему разработчики MIUI не предусмотрели возможность отключить эту систему. А они предусмотрели! Как ты думаешь, где находится интерфейс для отключения этой штуки? Вот здесь: «Безопасность → Разрешения → Автозапуск». Каково, а? Легко догадаться, зачем на самом деле нужен этот раздел настроек?
![](/data:img/459/tn:index/fn:img/null/img.png)
![](/data:img/460/tn:index/fn:img/null/img.png)
Интерфейс для отключения системы запрета на старт фоновых служб находится в приложении Security, в разделе Permissions → Autostart
Но и это еще не все. На самом деле нельзя просто взять и отключить функцию запрета на перезапуск служб, это надо делать для каждого приложения индивидуально и отключать для каждого только что установленного приложения. А если ты никогда этого не делал и у тебя не было никаких проблем с приходом уведомлений, значит, ты просто используешь глобальную версию прошивки (вот такая интересная фрагментация в мире MIUI).
И да, я отвечу на претензию тех, кто скажет, что именно такая функция и даже в еще более жесткой форме появилась в Android O. Отвечу так: в Android O система запрета на исполнение фоновых служб работает исключительно в отношении приложений, собранных для Android O, то есть тех приложений, которые уже были переведены на JobScheduler и потому будут работать корректно. Все уже написанные и опубликованные в Play Store приложения продолжат работать как раньше.
ВыводыНи в коем разе не хочу разжигать холивар. MIUI весьма юзабельна, и многие считают ее более удобной, чем та же LineageOS. Цель этой колонки — всего лишь донести до тех, кто хочет установить MIUI или купить китайскую версию смартфона Xiaomi, информацию о том, с чем они могут столкнуться. Лично я нахожу MIUI неудобной, перегруженной функциональностью и слишком непредсказуемой.