rdp-cli
Controlar um Android com um agente de IA por USB ou Wi-Fi
Conecte Android 12 ou superior, capture a tela, digite texto, transfira um arquivo e assuma a mesma sessão do rdp-cli.
A base de suporte é Android 12 ou posterior. O aparelho verificado é o Google Pixel 3 com Android 12; isso não significa que todos os fabricantes ou versões posteriores foram testados.
Preparar o celular
- Ative as opções do desenvolvedor e a depuração USB, conecte um cabo de dados e confirme a autorização no celular desbloqueado.
- Para Wi-Fi, ative a depuração sem fio e use o código e a porta de pareamento mostrados no celular. A porta de conexão é diferente; não é necessário cabo USB.
- A conexão USB no Windows precisa de um driver WinUSB adequado ao celular e à arquitetura do computador, incluindo ARM64. O rdp-cli não instala drivers nem encerra outras ferramentas de depuração. No Linux (x86_64 / ARM64), permita que seu usuário comum acesse o dispositivo USB do celular por meio da regra udev ou do grupo de dispositivos adequado e execute os comandos abaixo no Bash. Execute rdp-cli sem sudo. macOS usa a interface USB do sistema.
Substitua DEVICE_SERIAL, SESSION, OBSERVATION, PHONE_IP e as duas portas pelos valores reais. Guarde data.session de connect e use data.observation de cada captura. Substitua wifi:PHONE_GUID pelo ID wifi: retornado. Escolha um nome para PHONE_REF para salvar o pareamento neste computador. Digite o código atual de seis dígitos quando solicitado; o comando o envia pela entrada padrão.
Windows PowerShell: rdp-cli → .\rdp-cli.exe.
Encontrar e conectar
Escolha explicitamente o ID detectado. Conectar não abre uma janela nem inicia o áudio.
rdp-cli android devices
rdp-cli connect --protocol adb --device usb:DEVICE_SERIAL --transport usb
rdp-cli screenshot --session SESSION --out before.png
Concluir uma pequena tarefa
Abra um aplicativo de notas no celular autorizado e crie uma nota vazia. Confira before.png, substitua X e Y pelas coordenadas reais do campo e toque. Veja focused.png e use seu data.observation como NEW_OBSERVATION antes de colar. Confira o texto em result.png. Não é necessário abrir um visualizador no computador.
rdp-cli android touch --session SESSION --kind tap --x X --y Y --observation OBSERVATION
rdp-cli screenshot --session SESSION --out focused.png
Use o método explícito de área de transferência para Unicode ou várias linhas. Ele substitui a área de transferência do celular sem sincronizar a do computador. Troque o texto de exemplo pela sua nota. Após rotação ou expiração da observação, capture e confira novamente.
rdp-cli android text --session SESSION --method clipboard --text "Tarefa remota concluída." --observation NEW_OBSERVATION
rdp-cli screenshot --session SESSION --out result.png
Arquivos e pastas
Crie um note.txt local com seu texto de teste. Envie, salve data.transfer_id como UPLOAD_TRANSFER e espere completed. Baixe para outro arquivo local, salve o novo ID como DOWNLOAD_TRANSFER e espere completed antes de comparar. Os caminhos ficam na pasta da sessão do celular, não em diretórios privados dos aplicativos. Nomes existentes não são sobrescritos por padrão.
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
Conectar sem fio
Wi-Fi é uma alternativa ao USB. Se o celular já tem uma sessão USB, execute primeiro disconnect --session SESSION. Faça o pareamento e conecte com o ID retornado e a porta de conexão atual. Salve o novo data.session e capture a tela novamente antes de enviar entradas.
Para Wi-Fi, ative a depuração sem fio e use o código e a porta de pareamento mostrados no celular. A porta de conexão é diferente; não é necessário cabo USB.
macOS / Linux · Bash
printf '%s' 'Código de pareamento: '
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 'Código de pareamento' -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
Compartilhar o controle
Agente, janela nativa e navegadores autorizados compartilham uma sessão persistente. Pause ou assuma o controle quando precisar.
rdp-cli watch --session SESSION --viewer window
rdp-cli watch --session SESSION --viewer web
Como funciona
Se a lista USB estiver vazia, verifique o cabo de dados e as permissões. ADB_DEVICE_BUSY significa que outra ferramenta de depuração ocupa o celular; feche essa conexão explicitamente. No Wi-Fi, confira a porta de conexão atual e a identidade salva, sem confundir com a porta de pareamento. O sucesso da entrada confirma o envio; verifique o resultado com nova captura ou arquivo concluído.
- A sessão controla a tela existente do celular. Toques físicos e outras ferramentas de depuração também podem afetá-la.
- Colar Unicode modifica explicitamente a área de transferência do celular. Não lê nem sincroniza a área de transferência do computador.
- O áudio reproduzido exige confirmação do compartilhamento do sistema e respeita restrições de captura dos aplicativos. O microfone do celular é uma fonte separada; não há injeção do microfone do computador nos aplicativos.
- O áudio começa desativado e não é retomado ao reconectar. Componentes temporários são implantados apenas no celular autorizado, sem root nem troca de teclado.
Encerrar
Desative o áudio e desconecte. Arquivos concluídos e aplicativos do usuário permanecem no celular.
rdp-cli audio android --session SESSION --source off
rdp-cli disconnect --session SESSION