Comandos ágeis e importantes do Android SDK

Opa, Androiders. Hoje trago um tema interessante e que pode ser um auxiliador do desenvolvimento de nossas aplicações. Para quem tem familiaridade com comandos no terminal, serão informações valiosas e bem explicadas para o uso amplo de cada funcionalidade e para quem não é familiarizado, mão na massa para se tornar um expert no assunto.

Normalmente utilizamos a IDE do Android Studio ou até outras plataformas para o desenvolvimento (seja nativo ou híbrido) e não nos damos conta do poder de cada componente que compõe o suporte de desenvolvimento das aplicações Android. O Android Debug Bridge (ADB) possui várias funcionalidades que podem ser utilizadas para determinados fins, bem como o emulator, sqlite3, PackageManager e ActivityManager que são ferramentas dentro do Android SDK poderosas e manipuláveis.

Neste tópico vamos discutir um pouco sobre as possibilidades para cada uma dessas ferramentas e como você pode tirar proveito delas de uma forma breve e efetiva.

Android Debug Bridge (ADB)

O Android Debug Brigde, ou comumente chamado de ADB, é uma ferramenta poderosa de comunicação com seu dispositivo Android, seja ele físico ou virtual. Ele possui várias funcionalidades úteis que não se limitam apenas à IDE. Segue abaixo alguma de suas possibilidades:

Consulta de comandos em geral e versão do ADB

adb help

Consulta de dispositivos conectados ao ADB

adb devices

Conectar dispositivo com base no IP

adb connect [ip-do-dispositivo]

Desconectar dispositivo com base no IP

adb disconnect [ip-do-dispositivo]

Derrubar o servidor do ADB (resolve problemas de conexão com dispositivo)

adb kill-server

Reiniciar o servidor do ADB (resolve problemas de conexão com dispositivo)

adb start-server [ip-do-dispositivo]

Instalar aplicação em APK presente no desktop

adb install [caminho-da-apk]

Desinstalar aplicação diretamente no dispositivo com base no package

adb uninstall [nome-do-pacote]

Enviar arquivos para o dispositivo

adb push [caminho-do-arquivo-no-desktop] [caminho-no-dispositivo]

Receber arquivos do dispositivo (salvo no diretório que o terminal está apontando)

adb pull [caminho-do-arquivo-no-dispositivo]

Root de dispositivo (permitido apenas para alguns, útil para análises mais específicas e complexas)

adb root

Unroot de dispositivo

adb unroot

Acessar o shell do dispositivo (navegação de pastas e arquivos na raiz do dispositivo)

adb shell

Sair do shell

exit

Ferramentas internas do Shell

Acessando o shell do dispositivo, o desenvolvedor passa a ter vários recursos em mãos provenientes do dispositivo para aperfeiçoar suas análises e manipulações. É possível navegar pelos arquivos do dispositivo de pastas root, verificar conteúdos de aplicações, coletar logs, dentre várias possibilidades. Abaixo listei algumas linhas de comando que podem te ajudar no processo de desenvolvimento:

Logcat

Acessar o logcat do dispositivo

logcat

Acessar o logcat do dispositivo filtrado por palavra-chave

logcat | grep [palavra-chave]

Dumpsys

Acessar o relatório de activities inicializadas no dispositivo (rodando, pausadas, resumidas etc)

dumpsys activity activities

Mostrar as activities em execução no dispositivo de forma resumida

dumpsys activity | grep “Run #”

Mostrar as activities e componentes de interface em execução

dumpsys window windows | grep “Window #”

PackageManager

Listar usuários do seu dispositivo

pm list users

Listar pacotes de aplicações no dispositivo

pm list packages

Listar pacotes de aplicações no dispositivo com filtro (-s para aplicações do sistema operacional, e -3 para aplicações de terceiros, instaladas pela Google Play ou externas)

pm list packages [-s | -3]

Localizar o caminho para o diretório de uma determinada aplicação

pm path [pacote-da-aplicação]

Desinstalar uma aplicação do dispositivo

pm uninstall [pacote-da-aplicação]

ActivityManager

Inicializar activity com base no seu caminho (presente no AndroidManifest.xml)

am start -n [nome-do-pacote/.nome-da-activity]
am start -n nome-do-pacote.br.com.example/.nome-da-activity

Inicializar activities com base numa action

am start -a android.intent.action.VIEW geo:0,0?q=
am start -a android.intent.action.VIEW https://gok.digital
am start -a android.intent.action.CALL -d tel:[numero-de-celular]

Inicializar activity com base no seu caminho (presente no AndroidManifest.xml) e enviando parâmetros por Intent (chamar o comando am help para ver outros tipos de variável e combinações com mais de um extra)

am start -n [nome-do-pacote/.nome-da-activity] –es [chave-do-extra-do-tipo-string] [valor-para-o-extra-string]
am start -n [nome-do-pacote/.nome-da-activity] –ei [chave-do-extra-do-tipo-int] [valor-para-o-extra-int]
am start -n [nome-do-pacote/.nome-da-activity] –ez [chave-do-extra-do-tipo-boolean] [valor-para-o-extra-boolean]

Inicializar serviço de uma determinada aplicação (presente no AndroidManifest.xml)

am startservice [nome-do-pacote/.nome-da-classe]

Encerrar serviço de uma determinada aplicação (presente no AndroidManifest.xml)

am stopservice [nome-do-pacote/.nome-da-classe]

Inicializar BroadcastReceiver de uma determinada aplicação passando a action equivalente (presente no AndroidManifest.xml)

am broadcast -a [action]

Finalizar qualquer serviço em background

am force-stop

Finalizar serviços de uma aplicação em específico

am force-stop [pacote-da-aplicação]

Monkey

Inicializar uma categoria específica da aplicação (presente no AndroidManifest.xml)

monkey -p [pacote-do-app] -c [categoria]
monkey -p br.com.example.example -c android.intent.category.LAUNCHER

Informação útil

Quando for utilizar as ferramentas dentro do shell do dispositivo, você pode, tanto acessar o shell antes para então chamar a ferramenta em questão (inicializar uma activity, por exemplo), conforme o exemplo abaixo:

adb shell
am start -n nome-do-pacote.br.com.example/.nome-da-activity

Quanto é possível interpolar essas duas linhas de comando em uma:

adb shell am start -n nome-do-pacote.br.com.example/.nome-da-activity
adb shell logcat | grep [palavra-chave]

A escolha vai de sua preferência e/ou necessidade de ainda ter acesso ao shell ou não. Ambos os métodos são funcionais e te entregam o resultado esperado.

Conclusão

Percebe-se que o Android SDK tem ferramentas poderosas e principalmente efetivas para usos mais específicos e também para toda a composição do próprio sistema operacional. Utilizar esses artifícios no processo de desenvolvimento traz mais agilidade quando praticado e te torna mais experiente e conhecedor do sistema para qual desenvolvemos nossas aplicações.

Há uma infinidade de possibilidades quando o Android SDK é explorado, cada desenvolvedor se apega ao que precisa e entende. A troca de conhecimento nesse sentido é essencial para compreender a usabilidade e construir uma lógica efetiva no cenário de desenvolvimento.

Espero que este conteúdo seja relevante para sua jornada! Salve este conteúdo para ter sempre em mãos e fique atento ao blog com novas publicações que serão muito pertinentes e informativas.

Quer receber mais conteúdos como esse gratuitamente?

Cadastre-se para receber os nossos conteúdos por e-mail.

Email registrado com sucesso
Opa! E-mail inválido, verifique se o e-mail está correto.