Разработчики, работающие с устройствами Xiaomi на базе MIUI или HyperOS, сталкиваются с уникальными вызовами: агрессивная оптимизация батареи убивает фоновые процессы, предустановленные сервисы мешают отладке, а системные ограничения блокируют доступ к критичным API. Эта статья не про "ускорение смартфона для игр" — здесь собраны конкретные рекомендации для разработчиков, которые хотят получить полный контроль над устройством, отключить мешающие функции и настроить среду для тестирования, отладки или кастомизации.
Мы разберём не только очевидные пункты вроде Оптимизации MIUI, но и скрытые настройки, которые документация Xiaomi умалчивает. Например, почему отключение сервиса mipush может спасти ваш adb logcat от лага, или как правильно деактивировать Game Turbo, чтобы он не вмешивался в бенчмарки производительности. Все инструкции протестированы на устройствах с HyperOS 1.0+ и MIUI 14/13, но большинство актуально и для старых версий.
Предупреждение: некоторые изменения потребуют разблокировки загрузчика или прав root. Если вы не готовы к этому — пропускайте соответствующие разделы. Также помните, что отключение системных сервисов может нарушить работу фирменных фич (например, Quick Apps или Xiaomi Cloud).
1. Оптимизация батареи: почему ваше приложение умирает в фоне
Система оптимизации батареи в MIUI/HyperOS — главный враг разработчика. Она агрессивно закрывает фоновые процессы, блокирует WorkManager, убивает сервисы через doze-mode и игнорирует Foreground Service. Даже если вы правильно настроили AndroidManifest.xml, Xiaomi может проигнорировать ваши флаги.
Чтобы отключить оптимизацию для конкретного приложения:
- Перейдите в
Настройки → Приложения → Управление приложениями. - Выберите ваше приложение →
Ограничения батареи. - Установите режим
Без ограничений. - Включите
АвтозапускиБлокировка в фоне(да, это противоречит логике, но так работает MIUI).
Для глобального отключения оптимизации (требуется ADB):
adb shell dumpsys deviceidle force-idle
adb shell settings put global hidden_api_policy 1
⚠️ Внимание: После глобального отключения оптимизации батарея будет садиться на 15–30% быстрее. Используйте этот метод только на тестовых устройствах.
2. Сервисы mipush и msa: скрытые пожиратели ресурсов
Два системных сервиса — com.xiaomi.mipush.sdk и com.miui.msa.global — постоянно висят в памяти, отправляют аналитику и мешают отладке. Первый отвечает за пуш-уведомления (включая спам от Mi Browser), второй — за сбор телеметрии. Оба могут блокировать сетевые запросы вашего приложения, если сочтут их "подозрительными".
Отключить их можно двумя способами:
- 🔧 Через ADB (без root):
adb shell pm disable-user --user 0 com.xiaomi.mipush.sdkadb shell pm disable-user --user 0 com.miui.msa.global
- 🛠️ Через Magisk (с root): используйте модуль
DisableMIUIили удалите APK черезRoot Explorer.
После отключения:
- ✅ Уведомления от Xiaomi (реклама, обновления) перестанут приходить.
- ✅ Исчезнут лаги в
logcatиз-за фоновой активностиmipush. - ⚠️ Перестанут работать некоторые фичи Mi Account (например, поиск устройства).
Как проверить, что сервисы действительно отключены?
Запустите adb shell ps -A | grep -E 'mipush|msa'. Если в выводе нет процессов — всё сделано правильно.
3. Game Turbo и "Ускорение игр": почему они мешают бенчмаркам
Game Turbo — это не просто "режим для игр", а целый комплекс оптимизаций, который:
- Блокирует фоновые процессы (включая ваши тестовые сервисы).
- Ограничивает тактовую частоту CPU/GPU, если сочтёт приложение "не игровым".
- Подменяет разрешение экрана (даже если вы явно задали
1080pв настройках).
Чтобы отключить Game Turbo:
- Перейдите в
Настройки → Специальные возможности → Game Turbo. - Отключите ползунок
Ускорение игр. - Удалите все игры из списка "Оптимизированные приложения".
- Через
ADBвыполните:adb shell pm uninstall --user 0 com.miui.gameturbo
Для полного удаления (требуется root):
su
mount -o rw,remount /system
rm -rf /system/priv-app/GameTurbo
rm -rf /system/app/GameTurbo
mount -o ro,remount /system
4. Предустановленные приложения: что можно безопасно удалить
Xiaomi забивает устройства ненужными приложениями, которые:
- Занимают место в
/system. - Потребляют батарею и трафик в фоне.
- Могут конфликтовать с вашими тестовыми сборками (например, Mi Browser перехватывает
WebView).
Список безопасных для удаления приложений (через ADB):
| Пакет | Приложение | Последствия удаления |
|---|---|---|
com.miui.browser |
Mi Browser | Потеряете браузер по умолчанию, но WebView останется. |
com.miui.analytics |
Аналитика MIUI | Перестанут отправляться данные о использовании устройства. |
com.xiaomi.midrop |
Mi Drop | Не сможете использовать фирменную передачу файлов. |
com.miui.videoplayer |
Видеоплеер | Придётся использовать сторонний плеер. |
com.miui.notes |
Заметки | Потеряете синхронизацию с Mi Cloud. |
Команда для удаления (замените [package] на нужный пакет):
adb shell pm uninstall --user 0 [package]
⚠️ Внимание: Не удаляйтеcom.android.vending(Google Play) илиcom.google.android.gsf— это приведёт к потере функциональности Google Services.
5. Ограничения AppOps: почему ваше приложение не получает разрешения
Даже если пользователь дал все разрешения вручную, MIUI/HyperOS может блокировать их через скрытый менеджер AppOps. Например:
- Ваше приложение запросило
ACCESS_FINE_LOCATION, но координаты не приходят. - Камера работает, но не сохраняет фото в галерею.
NotificationListenerне ловит уведомления.
Чтобы проверить и сбросить ограничения:
- Установите AppOps от Rikka.
- Найдите ваше приложение и проверьте статус разрешения (например,
android:locationдолжно бытьALLOWED). - Если статус
IGNOREDилиDENIED, сбросьте черезADB:adb shell cmd appops reset [package]
Для глобального сброса (осторожно!):
adb shell cmd appops set [package] android:location ALLOW
adb shell cmd appops set [package] android:read_external_storage ALLOW
Установить AppOps Explorer|Найти пакет своего приложения|Проверить статус критичных разрешений (location, camera, storage)|Сбросить ограничения через ADB (если нужно)
-->
6. MIUI Optimization: скрытый убийца производительности
Функция MIUI Optimization (в HyperOS называется System Optimization) отвечает за:
- Ограничение фоновых процессов (даже для
root-приложений). - Подмену анимаций и переходов (мешает тестированию UI).
- Блокировку изменений в
/system(например, если вы пытаетесь заменитьbuild.prop).
Отключается только через ADB:
adb shell settings put global miui_optimization 0
После отключения:
- ✅ Увеличится лимит фоновых процессов (с 4–8 до 16+).
- ✅ Перестанут сбрасываться настройки разработчика после перезагрузки.
- ⚠️ Могут появиться лаги в стандартном лаунчере (MIUI Launcher не оптимизирован для работы без этой функции).
7. Настройки разработчика: что включить, а что отключить
В меню Настройки → О телефоне → Версия MIUI (7 раз тапните для разблокировки) скрыты опции, критичные для разработки. Но некоторые из них лучше отключить, чтобы избежать проблем:
- 🚫
Не выключать экран при зарядке— мешает тестированию режимов сна. - 🚫
Включить журнал HCI Bluetooth— забивает память логами. - ✅
Отладка по USB (безопасная)— обязательно дляADB. - ✅
Не отключать Wi-Fi при сне— нужно для тестирования фоновых задач. - 🚫
Ускоренная анимация (0.5x)— искажает реальное время отклика UI.
Также полезно включить:
adb shell settings put global development_settings_enabled 1
adb shell settings put global stay_on_while_plugged_in 0
Это откроет доступ к скрытым опциям, например:
Force GPU Rendering— для тестирования графики.Disable HW Overlays— если вы отлаживаетеSurfaceView.Show CPU Usage— для мониторинга нагрузки.
8. Knockoff и другие "фичи" безопасности, которые мешают отладке
Xiaomi добавляет в прошивку недокументированные механизмы безопасности, которые:
- Блокируют
ADBчерез определенные порты. - Прерывают соединение
Wi-Fi ADBпосле 5 минут бездействия. - Запрещают установку APK через
adb install, если файл скачан не из Google Play.
Чтобы обойти эти ограничения:
- Отключите
Knockoff(механизм защиты от несанкционированного доступа):adb shell settings put global knockoff_feature_enabled 0 - Увеличьте таймаут
Wi-Fi ADB:adb shell settings put global adb_wifi_auto_disable 0 - Разрешите установку из любых источников:
adb shell settings put global install_non_market_apps 1
⚠️ Внимание: ОтключениеKnockoffснижает защиту от атак черезADB. Используйте только на тестовых устройствах, не подключённых к публичным сетям.
Как проверить, активен ли Knockoff?
Запустите adb shell dumpsys activity service com.miui.knockoff. Если в выводе есть строка enabled=true, механизм включён.
FAQ: Частые вопросы разработчиков
Можно ли отключить MIUI Optimization без ADB?
Нет, в стандартном интерфейсе этой опции нет. Единственный способ — использовать ADB или модули Magisk (например, MIUI Optimizations Disabler).
Почему после отключения mipush перестали приходить уведомления от Telegram?
Telegram на MIUI использует mipush для доставки уведомлений в режиме энергосбережения. Решение: либо верните mipush, либо отключите оптимизацию батареи для Telegram вручную.
Как полностью удалить HyperOS и установить чистый Android?
Для этого нужно:
- Разблокировать загрузчик через Mi Unlock Tool.
- Установить кастомное recovery (TWRP или OrangeFox).
- Прошить GSI-образ (Generic System Image) с XDA.
Почему adb logcat лагает или обрывается?
Причины:
- Фоновая активность
mipushилиmsa(отключите их, как описано выше). - Ограничение
logcatв MIUI (решается командойadb shell setprop log.redaction false). - Нехватка памяти (закройте все приложения или используйте
adb logcat --buffer-size=16M).
Какие настройки нужно вернуть перед продажей устройства?
Обязательно:
- Включите обратно
MIUI Optimization. - Удалите все
ADB-ключи (adb shell pm clear com.android.shell). - Сбросьте настройки разработчика (
Настройки → Дополнительно → Сброс настроек). - Верните
mipushиmsa, если удаляли.
fastboot oem lock, иначе новый владелец не сможет обновить прошивку.