
Берёшь в руки андроид, включаешь его, а там уже целый зоопарк: три браузера, два магазина приложений, “рекомендации”, партнёрские игры и фоновая телеметрия от производителя. Весь этот предустановленный балласт на сленге называется bloatware, а процесс его зачистки — деблоатом (debloat). Для этой задачи давно придумали отличную утилиту — Universal Android Debloater Next Generation (UAD-NG). Она подключается к смартфону по adb и позволяет безопасно вычистить лишнее без рут-прав и перепрошивки.
Но у классической версии с графическим окном есть минус: открываешь окно, ждёшь загрузки списка, вручную выискиваешь и отмечаешь десятки галочек. Списка того, что сносил в прошлый раз, нигде не остаётся. И как вы помните, я не люблю гуй — если его нет, мне так нравится больше.
В релизах UAD-NG лежит uad-cli-macos тот же движок и те же списки пакетов, только без окна. Скачал бинарник, проверил контрольную сумму, положил в ~/.local/bin/uad и деблоат нового телефона сводится к одной команде.
Установка#
Понадобится adb в PATH и включённая отладка на телефоне по USB или по сети. Если adb нет:
brew install android-platform-toolsБинарников под macOS в релизе два: uad-cli-macos для Apple Silicon и uad-cli-macos-intel для старых маков. Скачиваем, сверяем и ставим:
cd /tmp
curl -LO https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/releases/latest/download/uad-cli-macos
curl -LO https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/releases/latest/download/uad-cli-macos-checksum
shasum -a 256 -c uad-cli-macos-checksum
chmod +x uad-cli-macos
mkdir -p ~/.local/bin
mv uad-cli-macos ~/.local/bin/uadshasum -c должен ответить uad-cli-macos: OK. ~/.local/bin у меня уже в PATH, если у вас нет — добавьте export PATH="$HOME/.local/bin:$PATH" в ~/.zshrc.
Карантин#
Через curl бинарник приезжает без карантина, а вот если качать из браузера, macOS повесит на файл свой атрибут и запускаться он откажется. Лечится так:
xattr -d com.apple.quarantine ~/.local/bin/uadИспользование#
Телефон подключается по проводу или по сети (adb connect <ip>:5555, на Android 11+ сначала adb pair <ip>:<port>), и сначала он должен быть виден в adb devices — без этого дальше ничего не поедет:
adb devices
uad devicesСписок и фильтры#
Дальше список пакетов с фильтрами, как в GUI:
uad list --removal recommended
uad list --list oem --state enabled
uad list --search facebookВ recommended у Samsung висят com.samsung.android.app.spage (Samsung Free с рекомендациями) и com.samsung.android.bixby.agent, у Xiaomi — com.miui.msa.global с системной рекламой и com.miui.analytics, а на партнёрских прошивках — четыре пакета Facebook: com.facebook.katana, com.facebook.appmanager, com.facebook.services, com.facebook.system.
Категории удаления те же, что в GUI: recommended, advanced, expert, unsafe. С unsafe лучше не экспериментировать — после такого телефон иногда лечится только полным сбросом.
И не всё лежит там, где ждёшь: Samsung Internet (com.sec.android.app.sbrowser) в recommended, Chrome (com.android.chrome) — в advanced, а com.google.android.apps.turbo (Device Health Services) в expert с пометкой “Breaks battery settings”.
Перед удалением смотрю описание и прогоняю dry-run:
uad info com.facebook.system
uad uninstall --dry-run com.facebook.system com.facebook.appmanagerУдаление#
Пакеты перечисляются через пробел, рут не нужен — внутри обычный pm uninstall для пользователя 0:
uad uninstall com.facebook.katana com.facebook.appmanager com.facebook.services com.facebook.systemВернуть пакет обратно — uad enable <пакет>. Если устройств несколько, нужное задаётся через -d <serial>.
Ещё есть интерактивный режим uad repl с list, info и uninstall и обновление списков командой uad update. Автодополнение для zsh ставится так:
uad completions zsh > "${fpath[1]}/_uad"Через агента#
Рутину можно отдать агенту. Особенно щас это модно, люди для себя открыли ADB для ТВ приставок. У меня OpenCode, и под деблоат заведён скилл uad-debloat: агент сам проверяет adb devices, обновляет списки, показывает кандидатов с описаниями, гоняет --dry-run и удаляет только после моего “ок”.
Установка в OpenCode#
Напомню скилл — это обычный Markdown с YAML-шапкой, который лежит в ~/.opencode/skills/<имя>/SKILL.md. Скачать готовый файл или забрать сразу в терминале:
mkdir -p ~/.opencode/skills/uad-debloat
curl -L -o ~/.opencode/skills/uad-debloat/SKILL.md https://blog.tatarinovms.space/scripts/uadclimacos/SKILL.mdПерезапускаем opencode — скилл подхватится. Дальше достаточно сказать:
Наведи порядок на телефоне
Внутри прописаны стопари: unsafe и expert без явной просьбы не трогать, пакеты вне списков UAD — тоже, а всё удалённое дописывать в ~/.config/uad/removed.txt, чтобы возвращать было чем.
Итог#
Список того, что я удаляю, теперь лежит текстовым файлом рядом с остальными конфигами. Подключаю телефон, выполняю uad uninstall с этим списком — и не кликаю по сотне строк в окне.
Вы великолепны.


