ADB Friend
Утилита командной строки для управления Android-устройствами через ADB. В первую очередь ориентирована на разработчиков, но может быть полезна всем.
Возможности
- Синхронизация файлов с компьютера на телефон. Разработана для тестовых данных: пропускает уже существующие файлы на устройстве.
- Настройка устройства для тестирования: отключение анимаций, включение касаний и т.д.
- Удаление приложений по шаблону (паттерну).
- Команды для пакетов: применение иммерсивного режима ко всем пакетам, соответствующим glob, принудительная остановка, очистка данных и кэша.
- Дополнительные инструменты, например
adb-speed для проверки скорости USB-кабеля.
Установка
Через Homebrew (macOS/Linux)
Сначала добавьте кастомный tap:
brew tap mikepenz/tap
Затем установите утилиту:
brew install mikepenz/tap/adbfriend
Скачивание готового бинарника
Загрузите собранный бинарник со страницы релизов.
Использование
ADB Friend запускается в терминале. Для справки по всем командам используйте:
adbfriend --help
MCP-сервер
Начиная с версии 1.4.0, ADB Friend предоставляет Model Context Protocol (MCP) сервер. Его можно подключить в популярных AI-инструментах: Claude Desktop, GitHub Copilot, RayCast.
Настройка в Claude Desktop
Пример конфигурации для claude_desktop_config.json:
{
"mcpServers": {
"adb-friend": {
"command": "/opt/homebrew/bin/adbfriend",
"args": ["mcp", "server"],
"env": {
"ANDROID_HOME": "/Users/mikepenz/Development/android/sdk"
}
}
}
}
Важно: Если переменная ANDROID_HOME не задана, ADB-сервер нужно запускать вручную, иначе будет ошибка соединения.
Отладка MCP-сервера
Запустите инспектор для отладки:
npx @modelcontextprotocol/inspector
После запуска откройте URL, который появится в терминале. Сервер ADB Friend можно запустить с включённым SSE (порт 3001 по умолчанию):
adbfriend mcp server --sse true
Доступные инструменты (tools) для MCP
get-connected-devices — список подключённых устройств
get-installed-packages — установленные пакеты
check-adb-speed — проверка скорости ADB
clear-installed-package — очистка данных пакета
set-immersive-full-for-package — включение полноэкранного иммерсивного режима для пакета
force-stop-process — принудительная остановка процесса
uninstall-package — удаление пакета
В будущем планируется больше инструментов.
Примеры запросов (для AI-агентов)
- «Удали приложение 'sample', но сохрани его данные»
- «Принудительно останови приложение 'sample'»
- «Есть ли у меня браузер на подключённом эмуляторе?»
Сборка из исходников
Проект использует Gradle и плагин Shadow для создания fat-jar:
./gradlew adbfriend-cli:shadowDistZip
Используемые библиотеки
- adam — для взаимодействия с ADB
- clikt — для построения CLI
Лицензия
Copyright 2025 Mike Penz. Проект распространяется под лицензией Apache 2.0. Полный текст лицензии доступен здесь.
Комментарии
Комментариев пока нет. Будьте первым.