Устройства Android
Телефоны, планшеты и телевизоры, которые видит adb на машине сервера, доступны не только агенту, но и вам — экраном «Устройства». Поставить сборку, посмотреть на экран, нажать, почитать лог — без терминала и без кабеля к тому компьютеру, за которым вы сидите.
Открывается значком телефона на главной (на узком экране он уезжает под «⋮»), пунктом палитры команд в приложении и в Android. Только хозяину машины.
Что на экране
- Список устройств — что видит
adb: модель, кабель или сеть, состояние. «Разреши отладку на экране» значит, что устройство ждёт подтверждения у себя. - Снимок экрана. Нажатие по снимку — нажатие на устройстве, протяжка — свайп. «Следить» обновляет снимок раз в пару секунд, пока экран открыт.
- Кнопки «Назад», «Домой», «Недавние», питание и громкость.
- Ввод текста — строка уходит в поле, где сейчас фокус на устройстве.
- Лог — хвост
logcatс фильтром по тегу и уровню. «Следить» включает живой лог: новые строки приходят сами, с тем же фильтром; закрыли экран —adbна сервере гаснет. - Установка APK — файл выбирается на том устройстве, с которого вы смотрите: в браузере или на телефоне. Сборку не нужно сначала переносить на машину сервера.
Что нужно на машине
adb из Android platform-tools. Clauder ищет его сам — в переменной ADB_PATH, в обычных местах SDK и в PATH. Не нашёл — так и говорит: «adb не найден», а не «устройств нет».
В докере
Контейнер api ходит в adb-сервер Windows-хоста (ADB_SERVER_SOCKET в docker-compose.yml), где телефон и телевизор уже авторизованы, — устройства видны без ручного проброса. Вступает в силу после пересоздания контейнера (docker compose up -d api). Другой адрес сервера adb задаётся той же переменной в .env.
Почему только хозяину
adb ставит и удаляет приложения, читает экран, вводит за человека и вытаскивает файлы. Это больше, чем терминал, и разрезать это областью проектов нечем — у устройства нет «папок ключа». Поэтому ключу с областью и ключу «только чтение» экран не показывается вовсе.
А агент?
Агенту те же движения даются инструментами: поставить APK, запустить приложение, снять лог, снимок экрана (он показывает его картинкой прямо в переписке), нажать. Они появляются в чате сами, если на машине есть adb, — просить агента «подскажи команду adb» больше не нужно, он сделает сам.