rdp-cli

Управление Android по USB или Wi-Fi с помощью ИИ-агента

Подключите Android 12 или новее, получите снимок экрана, введите текст, передайте файл и возьмите управление тем же сеансом rdp-cli.

Минимальная поддерживаемая версия — Android 12. Проверенное устройство — Google Pixel 3 с Android 12. Это не означает проверку всех производителей и последующих версий Android.

Скачать · Быстрый старт

Подготовка телефона

  1. Включите параметры разработчика и отладку по USB, подключите кабель для передачи данных и подтвердите разрешение на разблокированном телефоне.
  2. Для Wi-Fi включите беспроводную отладку и используйте показанные телефоном код и порт сопряжения. Порт подключения отличается; USB-кабель не нужен.
  3. Для USB в Windows нужен драйвер WinUSB, подходящий телефону и архитектуре компьютера, в том числе ARM64. rdp-cli не устанавливает драйверы и не закрывает другие средства отладки. В Linux (x86_64 / ARM64) предоставьте обычному пользователю доступ к USB-устройству телефона через подходящее правило udev или группу устройств и выполняйте команды ниже в Bash. Запускайте rdp-cli без sudo. macOS использует системный USB-интерфейс.

Замените DEVICE_SERIAL, SESSION, OBSERVATION, PHONE_IP и оба порта реальными значениями. Сохраните data.session из connect и используйте data.observation каждого снимка. Вместо wifi:PHONE_GUID укажите полученный идентификатор wifi:. Выберите имя PHONE_REF для сохранения сопряжения на этом компьютере. По запросу введите текущий шестизначный код; команда передаст его через стандартный ввод.

Windows PowerShell: rdp-cli → .\rdp-cli.exe.

Обнаружение и подключение

Явно выберите обнаруженный ID устройства. Подключение не открывает окно и не включает звук.

rdp-cli android devices
rdp-cli connect --protocol adb --device usb:DEVICE_SERIAL --transport usb
rdp-cli screenshot --session SESSION --out before.png

Выполнить небольшую задачу

Откройте приложение заметок на разрешённом телефоне и создайте пустую заметку. Проверьте before.png, замените X и Y координатами поля и нажмите. Посмотрите focused.png и используйте его data.observation как NEW_OBSERVATION перед вставкой. Проверьте текст по result.png. Окно просмотра на компьютере не требуется.

rdp-cli android touch --session SESSION --kind tap --x X --y Y --observation OBSERVATION
rdp-cli screenshot --session SESSION --out focused.png

Для Unicode и многострочного текста используйте явный метод буфера обмена. Он заменяет буфер телефона, не синхронизируя его с компьютером. Замените пример своим текстом. После поворота экрана или истечения наблюдения сделайте новый снимок и проверьте его.

rdp-cli android text --session SESSION --method clipboard --text "Удалённая задача выполнена." --observation NEW_OBSERVATION
rdp-cli screenshot --session SESSION --out result.png

Файлы и папки

Создайте локальный note.txt с тестовым текстом. Загрузите его, сохраните data.transfer_id как UPLOAD_TRANSFER и дождитесь completed. Скачайте под другим локальным именем, сохраните новый ID как DOWNLOAD_TRANSFER и снова дождитесь completed перед сравнением. Пути относятся к папке сеанса на телефоне, а не к закрытым каталогам приложений. Существующие файлы по умолчанию не перезаписываются.

rdp-cli files upload --session SESSION --local ./note.txt --path note.txt
rdp-cli files status --session SESSION --transfer-id UPLOAD_TRANSFER
rdp-cli files download --session SESSION --path note.txt --local ./note-returned.txt
rdp-cli files status --session SESSION --transfer-id DOWNLOAD_TRANSFER

Беспроводное подключение

Wi-Fi — альтернатива USB. Если у телефона уже есть USB-сеанс, сначала выполните disconnect --session SESSION. Затем выполните сопряжение и подключитесь с полученным ID устройства и текущим портом подключения. Сохраните новый data.session и сделайте новый снимок перед вводом.

Для Wi-Fi включите беспроводную отладку и используйте показанные телефоном код и порт сопряжения. Порт подключения отличается; USB-кабель не нужен.

Подключить телефон Android

macOS / Linux · Bash

printf '%s' 'Код сопряжения: '
IFS= read -r -s rdp_pair_code
printf '\n'
printf '%s' "$rdp_pair_code" | rdp-cli android pair --host PHONE_IP --port PAIR_PORT --code-stdin --save-device-auth PHONE_REF
unset rdp_pair_code
rdp-cli connect --protocol adb --device wifi:PHONE_GUID --transport wifi --host PHONE_IP --port CONNECT_PORT --device-auth-ref PHONE_REF

Windows · PowerShell

$pairingCode = Read-Host 'Код сопряжения' -AsSecureString
try {
  [System.Net.NetworkCredential]::new('', $pairingCode).Password |
    .\rdp-cli.exe android pair --host PHONE_IP --port PAIR_PORT --code-stdin --save-device-auth PHONE_REF
} finally {
  $pairingCode.Dispose()
}
.\rdp-cli.exe connect --protocol adb --device wifi:PHONE_GUID --transport wifi --host PHONE_IP --port CONNECT_PORT --device-auth-ref PHONE_REF

Общий сеанс

Агент, нативное окно и авторизованные браузеры используют один постоянный сеанс. При необходимости приостановите его или перехватите управление.

rdp-cli watch --session SESSION --viewer window
rdp-cli watch --session SESSION --viewer web

Просмотр и управление

Особенности работы

Если список USB пуст, проверьте кабель передачи данных и права доступа. ADB_DEVICE_BUSY означает занятость другим отладчиком; явно закройте его соединение. Для Wi-Fi проверьте текущий порт подключения и сохранённую идентичность телефона; порт сопряжения не подходит. Успешный ввод подтверждает отправку, а результат проверяется новым снимком или готовым файлом.

  • Сеанс управляет существующим экраном телефона. Физические касания и другие средства отладки по-прежнему могут влиять на него.
  • Вставка Unicode явно изменяет буфер обмена телефона. Буфер обмена компьютера не читается и не синхронизируется.
  • Звук воспроизведения требует подтверждения системного запроса на телефоне и соблюдает ограничения приложений на захват. Микрофон телефона — отдельный источник; передача микрофона компьютера в приложения не предусмотрена.
  • По умолчанию звук выключен; переподключение не возобновляет запись. Временные компоненты развёртываются только на авторизованном телефоне, без root и замены клавиатуры.

Завершение

Выключите звук телефона и отключитесь. Готовые файлы и пользовательские приложения останутся на телефоне.

rdp-cli audio android --session SESSION --source off
rdp-cli disconnect --session SESSION

Возможности · Справочник команд