Skip to content

MASTG-TECH-0001: Acessando o Shell do Dispositivo

Uma das tarefas mais comuns ao testar um aplicativo é acessar o shell do dispositivo. Nesta seção, veremos como acessar o shell do Android remotamente a partir do seu computador host (com ou sem cabo USB) e localmente a partir do próprio dispositivo.

Shell Remoto

Para conectar-se ao shell de um dispositivo Android a partir do seu computador host, adb geralmente é a ferramenta de escolha (a menos que você prefira usar acesso remoto SSH, por exemplo, via Termux).

Para esta seção, assumimos que você habilitou corretamente o Modo de Desenvolvedor e a Depuração USB, conforme explicado em "Testando em um Dispositivo Real". Após conectar seu dispositivo Android via USB, você pode acessar o shell remoto executando:

adb shell

Pressione Control + D ou digite exit para sair.

Uma vez no shell remoto, se seu dispositivo estiver com root ou você estiver usando o emulador, pode obter acesso root executando su:

bullhead:/ $ su
bullhead:/ # id
uid=0(root) gid=0(root) groups=0(root) context=u:r:su:s0

Apenas se você estiver trabalhando com um emulador, pode reiniciar o adb com permissões root usando o comando adb root. Assim, na próxima vez que inserir adb shell, você já terá acesso root. Isso também permite transferir dados bidirecionalmente entre seu computador host e o sistema de arquivos do Android, inclusive com acesso a locais onde apenas o usuário root tem permissão (via adb push/pull). Veja mais sobre transferência de dados em Transferência de Dados entre Host e Dispositivo abaixo.

Conectar a Múltiplos Dispositivos

Se você tiver mais de um dispositivo, lembre-se de incluir a flag -s seguida do ID serial do dispositivo em todos os seus comandos adb (por exemplo, adb -s emulator-5554 shell ou adb -s 00b604081540b7c6 shell). Você pode obter uma lista de todos os dispositivos conectados e seus IDs seriais usando o seguinte comando:

adb devices
List of devices attached
00c907098530a82c    device
emulator-5554    device

Conectar a um Dispositivo via Wi-Fi

Você também pode acessar seu dispositivo Android sem usar o cabo USB. Para isso, será necessário conectar tanto seu computador host quanto seu dispositivo Android à mesma rede Wi-Fi e seguir os próximos passos:

  • Conecte o dispositivo ao computador host com um cabo USB e configure o dispositivo alvo para escutar uma conexão TCP/IP na porta 5555: adb tcpip 5555.
  • Desconecte o cabo USB do dispositivo alvo e execute adb connect <endereço_ip_do_dispositivo>. Verifique se o dispositivo agora está disponível executando adb devices.
  • Abra o shell com adb shell.

No entanto, observe que, ao fazer isso, você deixa seu dispositivo aberto para qualquer pessoa que esteja na mesma rede e saiba o endereço IP do seu dispositivo. Você pode preferir usar a conexão USB.

Por exemplo, em um dispositivo Nexus, você pode encontrar o endereço IP em Configurações -> Sistema -> Sobre o telefone -> Status -> Endereço IP ou indo para o menu Wi-Fi e tocando uma vez na rede à qual você está conectado.

Veja as instruções completas e considerações na Documentação para Desenvolvedores Android.

Conectar a um Dispositivo via SSH

Se preferir, você também pode habilitar o acesso SSH. Uma opção conveniente é usar Termux, que pode ser facilmente configurado para oferecer acesso SSH (com autenticação por senha ou chave pública) e iniciado com o comando sshd (inicia por padrão na porta 8022). Para conectar-se ao Termux via SSH, você pode simplesmente executar o comando ssh -p 8022 <endereço_ip> (onde endereço_ip é o IP real do dispositivo remoto). Esta opção tem alguns benefícios adicionais, pois também permite acessar o sistema de arquivos via SFTP na porta 8022.

Aplicativo de Shell no Dispositivo

Embora o uso de um shell no dispositivo (emulador de terminal) como Termux possa ser muito tedioso em comparação com um shell remoto, pode ser útil para depuração em casos de, por exemplo, problemas de rede ou para verificar alguma configuração.