↓ Перейти к основному содержимому

uad-cli-macos: деблоат Android из терминала

·645 слов·4 минут·
logo

Берёшь в руки андроид, включаешь его, а там уже целый зоопарк: три браузера, два магазина приложений, “рекомендации”, партнёрские игры и фоновая телеметрия от производителя. Весь этот предустановленный балласт на сленге называется 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/uad

shasum -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 с этим списком — и не кликаю по сотне строк в окне.

Вы великолепны.

Related