15 вещей, которые разработчик Xiaomi должен отключить в настройках

Разработчики, работающие с устройствами 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 может проигнорировать ваши флаги.

Чтобы отключить оптимизацию для конкретного приложения:

  1. Перейдите в Настройки → Приложения → Управление приложениями.
  2. Выберите ваше приложение → Ограничения батареи.
  3. Установите режим Без ограничений.
  4. Включите Автозапуск и Блокировка в фоне (да, это противоречит логике, но так работает 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.sdk
    

    adb 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:

  1. Перейдите в Настройки → Специальные возможности → Game Turbo.
  2. Отключите ползунок Ускорение игр.
  3. Удалите все игры из списка "Оптимизированные приложения".
  4. Через 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

📊 Вы отключаете Game Turbo на своих устройствах?
Да, всегда
Только на тестовых девайсах
Нет, он полезен
Не знаю, что это

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 не ловит уведомления.

Чтобы проверить и сбросить ограничения:

  1. Установите AppOps от Rikka.
  2. Найдите ваше приложение и проверьте статус разрешения (например, android:location должно быть ALLOWED).
  3. Если статус 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 OptimizationHyperOS называется 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.

Чтобы обойти эти ограничения:

  1. Отключите Knockoff (механизм защиты от несанкционированного доступа):
    adb shell settings put global knockoff_feature_enabled 0
  2. Увеличьте таймаут Wi-Fi ADB:
    adb shell settings put global adb_wifi_auto_disable 0
  3. Разрешите установку из любых источников:
    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?

Для этого нужно:

  1. Разблокировать загрузчик через Mi Unlock Tool.
  2. Установить кастомное recovery (TWRP или OrangeFox).
  3. Прошить GSI-образ (Generic System Image) с XDA.
Предупреждение: это аннулирует гарантию и может привести к brick устройства.

Почему adb logcat лагает или обрывается?

Причины:

  • Фоновая активность mipush или msa (отключите их, как описано выше).
  • Ограничение logcat в MIUI (решается командой adb shell setprop log.redaction false).
  • Нехватка памяти (закройте все приложения или используйте adb logcat --buffer-size=16M).

Какие настройки нужно вернуть перед продажей устройства?

Обязательно:

  1. Включите обратно MIUI Optimization.
  2. Удалите все ADB-ключи (adb shell pm clear com.android.shell).
  3. Сбросьте настройки разработчика (Настройки → Дополнительно → Сброс настроек).
  4. Верните mipush и msa, если удаляли.
Если продаёте устройство с разблокированным загрузчиком — выполните fastboot oem lock, иначе новый владелец не сможет обновить прошивку.