Conhecendo comandos ADB

Alberson Barbosa
6 min readApr 9, 2021

--

Olá QAs, tudo massa? Vamos ao nosso próximo tópico e vamos de participação especial.

Tema de hoje: Conhecendo comandos ADB

Participação: Gutemberg Ferreira
Bio: www.linkedin.com/in/gutembergbritoferreira

Após a instalação e configuração do ambiente de desenvolvimento Android utilizando os links oficiais disponibilizados pela Google (Android Studio, Sdk Android e Commandline Tools) é possível utilizar algumas ferramentas que lhe ajudarão no desenvolvimento de aplicativos. A ferramenta em questão desse artigo é o ADB ou Android Debug Bridge, que funciona através de comandos executados em um terminal e permite que seja realizada a comunicação entre o computador e o dispositivo, seja ele real (ex.: smartphone) ou emulado, e essa comunicação pode ocorrer através cabo USB, Wi-Fi e Conexão Ethernet. É importante salientar: para que a comunicação ocorra com um dispositivo real é necessário que o mesmo possua o “Modo desenvolvedor” e “Depuração USB” ativos respectivamente. Não é uma configuração difícil de ser ativada e é possível encontrar vários tutoriais de como fazer o procedimento.

Deixando de lado a parte técnica de como instalar e configurar o Android Studio, e puxando a sardinha para o lado de Qualidade de Software, essa ferramenta se torna um verdadeiro canivete suíço nas mãos de um QA e ajuda muito nas tarefas diárias de quem testa aplicações Android, como por exemplo na coleta de logs de aplicações, instalação e remoção de aplicativos, coleta de informações dos aplicativos instalados, envio e coleta de arquivos diversos, gravar um vídeo ou realizar a captura da tela (printscreen), além de outras tarefas. Vamos listar abaixo, os comandos mais utilizados diariamente e como a ferramenta pode ajudar. Todos os comandos listados, além de outros, podem ser melhor estudados através da documentação disponibilizada no link: https://developer.android.com/studio/command-line/adb.html .

COMANDOS

  • adb connect device_ip:port

Primeiramente, para realizar a comunicação com dispositivos reais através de uma conexão Ethernet ou Wi-Fi é necessário realizar esse comando para que seja possível utilizar os demais comandos citados a seguir. Onde adb connect são comandos padrões da ferramenta, device_ip é o ip do dispositivo dentro da rede na qual ele está conectado e port é a porta de comunicação, geralmente já pré configurado nos dispositivos com o valor 5555, não sendo necessário passar esse parâmetro.

  • adb devices -l

Comando utilizado para saber quais dispositivos estão conectados ao servidor ADB. Como resposta ao comando é exibida uma lista onde consta o número de série do dispositivo, o dispositivo em questão e o estado da conexão (possuindo estados como offline, device e no-permission).

  • adb kill-server e adb start-server

São comandos utilizados caso ocorra algum problema com a comunicação entre o dispositivo e o computador, sendo utilizado primeiro o comando adb kill-server para que o processo do adb seja encerrado e as conexões estabelecidas sejam forçadas a se encerrarem, e logo após o comando adb start-server para que a o serviço seja iniciado novamente e a conexão seja estabelecida.

  • adb install .apk

Comando utilizado para realizar a instalação de um aplicativo através do seu arquivo de instalação .apk, é um comando muito útil pois não necessita de interação com o dispositivo, e como muitas das vezes (senão todas rs) os aplicativos desenvolvidos são disponibilizados através de uma outra plataforma sem ser o Google Play (Ex: Appcenter, email, pendrive, um local na intranet da empresa), então é necessário copiar esse aplicativo para o dispositivo e então abrir o gerenciador de arquivos e iniciar o processo de instalação (vários passos e muita paciência), já com esse comando, basta passar o local onde o apk se encontra e aguardar a finalização do apk.

  • adb logcat

“O Logcat é uma ferramenta de linha de comando que despeja um registro de mensagens do sistema, incluindo stack traces, quando o dispositivo gera um erro e mensagens que você escreveu no app com a classe Log.” Como é citada na documentação, com esse comando é possível realizar a leitura das mensagens do sistema, mensagens de log, requisições sendo feitas ao ao realizar determinada ação e a captura de erros específicos(FATAL EXCEPTION, NULLPOINTEREXCEPTION, FATAL ERROR) dentro da aplicação ajudando o desenvolvedor a encontrar um caminho para resolução do problema.

Exemplo de erro FATAL EXCEPTION em uma aplicação:

18745–18745/com.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app, PID: 18745
java.lang.NullPointerException
at com.appFunction(PayViewModel.kt:83)
at com.appRequest(PayViewModel.kt:73)
at com.app.onRequest(Pay.kt:54)
at com.app.onRequest(Pay.kt:24)

  • adb pull remote local e adb push local remote

Comandos utilizados para realizar transferências de arquivos entre o dispositivo e o computador. Para copiar um arquivo do dispositivo para o computador é usado o comando adb pull remote local, onde remote é o local onde se encontra o arquivo ou pasta no dispositivo a ser copiada, e local é o diretório onde será realizado a cópia no computador.

Ex.: adb pull /sdcard/foo.txt foo.txt

Para realizar a ação inversa, copiar um arquivo ou pasta do computador para o dispositivo usa-se o comando adb push local remote

Ex.: adb push foo.txt /sdcard/foo.txt

adb shell

Com esse comando é possível iniciar o shell do sistema operacional e realizar comandos do dispositivo. Como são várias opções de comandos e cada uma tem um cenário específico a ser usada, trago as que mais ajudam nas tarefas de testes:

  • adb shell pm list packages

Exibe uma lista com todos os pacotes instalados no dispositivo, ajuda a identificar o nome correto dos pacotes. Ex: com.app4point.app

  • adb shell dumpsys window windows | grep -E ‘mCurrentFocus’

Comando usado para listar o nome do pacote da aplicação que estiver rodando em primeiro plano.

  • adb uninstall package

Usado para desinstalar aplicativos através do nome do pacote.

  • adb shell screencap filename

Comando usado para realizar uma captura da tela do dispositivo. Onde filename seria o local onde arquivo será salvo no dispositivo.

Ex.: adb shell screencap /sdcard/screen.png

  • adb shell screenrecord filename

Comando usado para gravar a tela do dispositivo em um arquivo MPEG-4. A gravação pode ser interrompida através do comando Control+C do teclado, tem um limite padrão de 3 minutos de gravação e também aceita um valor de limite passado através de parâmetro — time-limit.

Ex.: adb shell screenrecord /sdcard/demo.mp4

Fim da linha?

Com certeza NÃO! O ADB é apenas uma das ferramentas disponibilizadas pelo SDK, e os comandos citados não são apenas esses, cada comando especificado na documentação tem um cenário que pode ser usado e vai depender também de um pouco de conhecimento técnico sobre comandos linux ( pois o android é um sistema operacional que roda em cima do kernel do linux), ainda mais para combinação de comandos shell, praticar esses comandos é fundamental para um bom entendimento, então tente executá-los e veja o que acontece, afinal “o preço da perfeição é a prática constante” (Andrew Carnegie).

Bônus

  • Scrcpy

A ferramenta scrcpy fornece a exibição e controle da tela do dispositivo conectado (espelhamento), funciona em windows, linux e mac e pode auxiliar também na gravação de vídeos para coleta de evidências, controlar as interações com o sistema através do mouse, controlar a orientação e tamanho da tela, além de outros comandos disponíveis na documentação.

Agradeço a oportunidade, fiquem com Deus, e em tempos de pandemia, cuidem da sua e da saúde de sua família.

Este post é apenas um pedacinho da Área de Qualidade de Software, busque, qualifique-se e lembre sempre: a base em Teste de Software te levará a lugares que jamais imaginou.

Obrigado e até a próxima ;)

Referências

--

--

Alberson Barbosa
Alberson Barbosa

Written by Alberson Barbosa

Apaixonado por qualidade de software e um grande entusiasta de boas práticas de teste, time e um feedback não mata ninguém.