adbhelper.py — это Python-скрипт, который упрощает повседневные задачи Android-разработчика и тестировщика: установка/удаление APK, снятие скриншотов и видео с экрана, сбор и анализ logcat, запуск активити, ввод событий и многое другое. Скрипт использует установленный у вас adb и не требует сторонних Python-зависимостей.
-
Python: 3.9+
-
ADB: Android SDK Platform Tools должны быть установлены и доступны в
PATH- Либо передайте путь к
adbчерез флаг--adb(можно указать файл или каталогplatform-tools)
- Либо передайте путь к
-
ОС: Windows 10/11, macOS 12+, Linux (Ubuntu 20.04+)
- Склонируйте репозиторий ADB-Helper-Script:
git clone https://github.com/Android-RU/ADB-Helper-Script.git
cd ADB-Helper-Script- Убедитесь, что
adbдоступен:
adb versionЕсли команда не найдена — добавьте
platform-toolsвPATHили используйте--adb.
- Запустите помощь:
python adbhelper.py -h# Список устройств
python adbhelper.py devices
# Установка APK c разрешениями и заменой
python adbhelper.py install app-release.apk --grant-all --replace
# Скриншот в файл
python adbhelper.py screenshot --out out/screen.png
# Логи за 2 минуты с фильтром и записью в файл
python adbhelper.py logcat --duration 120 --filter ActivityManager:I --out logs/am.log
# Старт главной активити
python adbhelper.py app start --package com.example.app --activity .MainActivity
# Ввод текста в текущее поле
python adbhelper.py input text "hello world"
# Сводка по устройству в JSON
python adbhelper.py device-info --jsonОбщий формат:
python adbhelper.py <command> [subcommand] [options]Список подключённых устройств с моделью и версией Android.
python adbhelper.py devices [--json]Установка APK.
python adbhelper.py install <path_to.apk> [--grant-all] [--replace] [--downgrade]Удаление пакета.
python adbhelper.py uninstall --package <name> [--keep-data]Снять скриншот экрана.
python adbhelper.py screenshot [--out <file.png>]Записать видео экрана (по умолчанию 30 с, максимум 180 с).
python adbhelper.py record [--duration <sec>] [--bitrate <Mbps>] [--out <file.mp4>]Сбор логов logcat в файл с фильтрами.
python adbhelper.py logcat [--out <file.log>] [--since <5m|2h|ISO>]
[--filter <tag:level>]... [--clear] [--duration <sec>]Офлайн-анализ сохранённого файла логов.
python adbhelper.py analyze-logs --file <path> [--json]Операции с приложением.
# Старт активити/интента
python adbhelper.py app start --package <p> [--activity <A>] [--action <ACTION>] [--data <uri>] [--extra k=v]...
# Остановка приложения
python adbhelper.py app stop --package <p>
# Сброс данных
python adbhelper.py app clear --package <p>
# Выдать runtime-разрешения
python adbhelper.py app grant-perms --package <p> --perms CAMERA RECORD_AUDIO ...
# Информация о пакете
python adbhelper.py app info --package <p>Ввод событий.
python adbhelper.py input tap <x> <y>
python adbhelper.py input text "строка"
python adbhelper.py input key KEYCODE_BACK
python adbhelper.py input swipe <x1> <y1> <x2> <y2> [--duration <ms>]Выполнить shell-команду (используйте -- для окончания парсинга).
python adbhelper.py shell [--root] -- getprop ro.build.version.releaseОбмен файлами.
python adbhelper.py pull --remote <path> [--out <local>]
python adbhelper.py push --src <local> --remote <path>Сводка по устройству.
python adbhelper.py device-info [--json]Подключение по сети.
python adbhelper.py tcpip enable [--port <5555>]
python adbhelper.py tcpip connect --host <ip> [--port <p>]
python adbhelper.py tcpip disableПараметры экрана.
python adbhelper.py screen size [--set WxH]
python adbhelper.py screen density [--set <dpi>]
python adbhelper.py screen rotate (--landscape | --portrait | --unlock)--adb <path> Путь к бинарнику adb или каталогу platform-tools
--serial <id> Serial устройства (как в `adb -s`)
--timeout <sec> Глобальный таймаут (по умолчанию 30 с)
--dry-run Печать adb-команд без выполнения
--verbose Подробный лог
--quiet Минимум вывода
--version Печать версии
-h, --help Справка
0— успех1— общая ошибка/исключение2— не найденadb3— нет устройств или несколько без--serial4— неверные аргументы5— таймаут операции
Скрипт поддерживает конфиг-файл (опционально) и переменные окружения.
adb_path = "/path/to/platform-tools/adb" # или каталог platform-tools
default_serial = "emulator-5554"
default_timeout = 30
output_dir_logs = "logs"
output_dir_screens = "screenshots"ADBHELPER_ADB_PATH=/path/to/adb
ADBHELPER_DEFAULT_SERIAL=emulator-5554
ADBHELPER_DEFAULT_TIMEOUT=30
ADBHELPER_OUTPUT_LOGS=logs
ADBHELPER_OUTPUT_SCREENS=screenshots
Приоритет: CLI → env → конфиг → значения по умолчанию.
- Быстрый smoke-тест запуска:
python adbhelper.py app start --package com.example --activity .MainActivity
python adbhelper.py logcat --duration 10 --filter ActivityManager:I- Сбор логов с сохранением и анализом:
python adbhelper.py logcat --duration 120 --out logs/run.log
python adbhelper.py analyze-logs --file logs/run.log --json- Запись экрана в 60 FPS-подобной нагрузке (битрейт 6 Мбит/с, 45 с):
python adbhelper.py record --duration 45 --bitrate 6- Работа с несколькими устройствами:
python adbhelper.py --serial emulator-5554 screenshot
python adbhelper.py --serial R58M123ABC install app.apk- Безопасная проверка команд:
python adbhelper.py --dry-run install app.apk --replace-
adb не найденУстановите Android SDK Platform Tools и добавьтеplatform-toolsвPATH, либо укажите--adb. -
Нет подключённых устройствПроверьте кабель/драйверы (Windows), включитеDeveloper optionsиUSB debugging. -
Несколько устройств подключено Укажите конкретный девайс:
--serial <id>. -
Права доступа на macOS Разрешите терминалу доступ к съёмке экрана/файлам при записи экрана/скриншотах, если требуется.
-
Видео пустое/повреждено Уменьшите длительность/битрейт, проверьте свободное место на устройстве и ПК.
-
Код — единый файл
adbhelper.pyс подробными комментариями. -
Логи сохраняются в
adbhelper.logс ротацией (до 5 файлов по 1 МБ). -
Мини-идеи для тестов:
- Юнит-тест парсинга аргументов и режима
--dry-run. - Интеграционные сценарии:
devices,screenshot,logcat --duration 5,install/uninstallна тестовом APK.
- Юнит-тест парсинга аргументов и режима