Dicas e truques do ADB: comandos que todo usuário avançado deve conhecer

Há muitas coisas no Android Debug Bridge que você talvez não conheça. Clique aqui para obter algumas dicas e truques úteis para usar o ADB!

Links Rápidos

  • Acesso shell
  • Conectando-se a vários dispositivos
  • Transferindo arquivos
  • Exploração madeireira
  • Listando aplicativos instalados por meio do ADB
  • Instalando e desinstalando aplicativos através do ADB
  • Extraindo APKs com ADB
  • Fazendo backup e restaurando dados do aplicativo
  • Listando componentes do aplicativo
  • Lançamento de atividades, serviços e receptores de transmissão
  • Desativando e ativando quase todos os aplicativos
  • Capturando capturas de tela
  • Transferindo dados binários entre o PC e o dispositivo Android

Se você é um entusiasta do Android à espreita na cena modding ou um desenvolvedor de aplicativos há algum tempo vez, mais cedo ou mais tarde, você encontrará uma ferramenta interessante chamada Android Debug Bridge, ou ADB para curto. É amplamente usado no Android Studio como um utilitário complementar de linha de comando. Os desenvolvedores Android também o usam como uma solução independente para instalar e testar aplicativos manualmente em

Smartphones Android bem como dispositivos Android emulados.

Mas há muito que o ADB pode fazer, e a maior parte não é útil apenas para desenvolvedores. Mesmo que você não seja um desenvolvedor e esteja lendo este artigo, há uma boa chance de você provavelmente ter usado o ADB uma ou duas vezes para sideload de um aplicativo ou ajuste uma permissão. Mas não é só para isso que o ADB pode ser usado. Continue lendo para obter algumas dicas e truques para usar o ADB que você talvez não conheça.

Você precisará ter o ADB instalado e funcionando em seu computador. Não deixe de conferir nosso artigo sobre como instalar o ADB Se precisar de ajuda. Caso você esteja usando Windows, você também precisa instale os drivers USB OEM apropriados para o seu dispositivo Android.

Acesso shell

Se você já usou o ADB antes, pode estar acostumado a executar comandos em uma linha. Mas você também pode usar o ADB para abrir um terminal no seu dispositivo e executar comandos diretamente. E é fácil!

No seu terminal ou janela do prompt de comando:

adb shell

Você será então saudado com um $ símbolo onde você pode executar comandos diretamente no seu dispositivo.

Conectando-se a vários dispositivos

O ADB pode se comunicar com vários dispositivos ao mesmo tempo. No entanto, você deve especificar o dispositivo de destino ao emitir comandos ADB em tais cenários.

Para fazer isso, você precisará saber o número de série do dispositivo de destino. Você pode obter o serial usando o comando devices:

adb devices

Agora, use o -s opção para especificar o número de série do dispositivo de destino. Exemplo:

adb -s <serialnumber> shell

Transferindo arquivos

Para os aficionados da linha de comando, o ADB oferece uma maneira muito fácil de transferir arquivos de e para o seu dispositivo Android. Basta usar o pull comando para copiar arquivos e diretórios do dispositivo e do push comando para copiar arquivos e diretórios para o dispositivo:

Se você deseja copiar um arquivo ou diretório com seus subdiretórios para o dispositivo Android:

adb push local_path device_path
  • Exemplo: adb push D:\image.png /sdcard

O comando a seguir copiará um arquivo ou diretório com seus subdiretórios do dispositivo Android para o PC host:

adb pull device_path local_path
  • Exemplo: adb pull /sdcard/backup_April.tar D:\Backup

Exploração madeireira

O Android Studio fornece o Janela Logcat, que suporta a exibição de registros do seu dispositivo em tempo real. No entanto, não é exatamente útil para processamento em lote. Felizmente, os dispositivos Android vêm com o comando logcat disponível através do ADB, que pode ser usado para despejar mensagens de log do sistema e do aplicativo e imprimi-las na tela.

A sintaxe básica é a seguinte:

adb logcat

Para saber mais, dê uma olhada em nosso tutorial em como obter logcats do sistema, logs do kernel e dmesg no Android.

ovos de Páscoa

O Google oferece dois ovos de páscoa bacanas relacionados ao comando logcat.

  1. O primeiro é lolcat, uma homenagem ao Meme LOLcat. Ele fornece a mesma saída do comando logcat normal.
    adb lolcat
  2. O segundo é longcat, que equivale ao comando logcat -v long. Ele exibe todos os campos de metadados e mensagens separadas com uma linha em branco.
    adb longcat

Listando aplicativos instalados por meio do ADB

Para ver os aplicativos instalados no seu dispositivo, você pode usar o seguinte comando:

adb shell pm list packages

Isso retornará uma lista dos nomes dos pacotes dos aplicativos instalados, com cada um em sua própria linha, precedido por package:.

Opções

Existem também algumas opções que você pode usar para recuperar listas mais específicas.

  • -f incluirá o caminho para o APK base de cada aplicativo, junto com o nome do pacote.
  • -a garantirá que todos os pacotes não APEX conhecidos sejam retornados.
  • -d fará com que o comando retorne apenas pacotes desabilitados.
  • -e fará com que o comando retorne apenas pacotes habilitados.
  • -s fará com que o comando retorne apenas pacotes do sistema.
  • -3 fará com que o comando retorne apenas pacotes de terceiros.
  • -eu incluirá o nome do pacote de instalação para cada pacote.
  • -VOCÊ incluirá o UID do pacote para cada pacote.
  • -você incluirá pacotes desinstalados.
  • --show-código da versão incluirá o código da versão de cada pacote.
  • --apex-somente retornará apenas pacotes APEX.
  • --uid mostrará apenas pacotes com o UID fornecido.
  • --do utilizador mostrará apenas pacotes pertencentes ao ID de usuário fornecido.

Instalando e desinstalando aplicativos através do ADB

Este é um uso relativamente comum do ADB, mas vale a pena mencionar de qualquer maneira. Entre outras maneiras, você também pode usar o ADB para instalar e desinstalar aplicativos Android para o seu dispositivo Android.

Instalando um APK

Se você tiver um APK em seu computador, poderá instalá-lo em seu dispositivo com o seguinte:

adbinstall-rsomeapk.apk

Lembre-se de substituir someapk.apk com o caminho completo para o APK que você deseja instalar.

Opções

Existem várias opções para instalar APKs por meio do ADB.

  • O -r opção permite que o ADB seja instalado sobre um aplicativo existente (ou seja, atualização). No Android Pie e versões posteriores, não é necessário especificar esta opção.
  • O -R opção, para Android Pie e posterior, causará falha na instalação se o aplicativo já estiver instalado.
  • O -eu opção permite especificar um nome de pacote de instalação. Isto é o que será retornado se o Android quiser saber o que instalou o APK.
  • O -t opção permite um APK com android: testOnly = "verdadeiro" em seu manifesto para ser instalado.
  • O -d opção permite que o APK especificado seja um downgrade para um aplicativo já instalado. Isso só funciona se ambas as versões do aplicativo forem depuráveis.
  • O -g opção para Android Marshmallow e posterior concede automaticamente todas as permissões de tempo de execução para o aplicativo instalado.

Isso não é tudo. Se quiser uma lista completa, você pode verificar a documentação integrada.

Vários APKs e pacotes

Se você tiver vários APKs que deseja instalar de uma vez, seja de vários aplicativos ou porque está instalando um pacote de aplicativos, poderá usar o ADB install-multiple e install-multi-package características.

Se todos os seus APKs forem para um aplicativo, use install-multiple:

adbinstall-multipleapk1.apkapk2.apk ...

Caso contrário, use install-multi-package:

adbinstall-multi-packageapp1.apkapp2.apk ...

As opções para esses comandos são semelhantes a install, mas com algumas limitações. Confira a documentação integrada do ADB para saber quais opções estão disponíveis.

Desinstalando um aplicativo

Para desinstalar usando ADB, você precisará do nome do pacote do aplicativo que deseja desinstalar. Confira a seção para Listando aplicativos instalados se você ainda não o fez.

Depois de ter o nome do pacote, a desinstalação é tão simples quanto:

adb uninstall <packagename>

Geralmente, você não pode desinstalar o sistema ou aplicativos pré-instalados usando este comando. Você pode desativá-los com ADB, no entanto. Confira a seção Desativando e ativando quase todos os aplicativos para detalhes.

Extraindo APKs com ADB

Existem vários motivos pelos quais você pode querer extrair o(s) APK(s) de um aplicativo. Talvez você queira fazer backup para uso futuro ou talvez ele não esteja mais disponível online e você queira transferi-lo para um dispositivo diferente.

Extrair um aplicativo usando ADB é bastante simples. Primeiro, você deseja encontrar o nome do pacote do aplicativo que deseja extrair. Existem várias maneiras de fazer isso, mas a mais fácil geralmente é usar o aplicativo Configurações do seu dispositivo para visualizar o lista de todos os aplicativos instalados, selecione o que deseja e role para baixo até encontrar o nome do pacote ou aplicativo EU IA.

Depois de ter o nome do pacote, execute o seguinte comando:

adb shell pm path <packagename>

Este comando retornará o caminho de todos os APKs desse nome de pacote.

Você pode então usar o seguinte comando para extrair cada APK para o seu computador:

adb pull /path/to/apk.apk

Fazendo backup e restaurando dados do aplicativo

Embora o Google ainda não tenha desenvolvido uma metodologia de backup com um clique no estilo iOS, você pode usar o ADB para fazer backup e restaurar aplicativos instalados junto com seus dados. No entanto, a funcionalidade está longe de ser perfeita e o Google já marcou o recurso como obsoleto.

Cópia de segurança

Para fazer backup de um único aplicativo, com seu APK:

adb backup -apk <packagename> -f package_name_backup.ab

Caso você queira fazer backup de todos os dados do aplicativo de uma vez:

adb backup -f all -all -apk -nosystem

Como o módulo de restauração não pode realizar restaurações específicas do aplicativo individual, é melhor criar backups específicos do pacote. O seguinte trecho de comando (compatível com Linux/macOS e Windows Subsystem para Linux) pode fazer isso por você:

for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done

Restaurar

Primeiro, você precisa instalar o APK salvo;

adb install <packagename>.apk

Então você pode restaurar seus dados:

adbrestorepackage_name_backup.ab

Para reiterar, as funcionalidades de backup e restauração do ADB têm várias ressalvas, incluindo resultados variáveis ​​dependendo da ROM

Listando componentes do aplicativo

Os componentes de um aplicativo são atividades, BroadcastReceivers, serviços e assim por diante. Às vezes é útil saber os nomes desses componentes em um aplicativo específico, especialmente se você deseja iniciar atividades ocultas ou enviar uma transmissão com dados específicos.

Infelizmente, o ADB não possui uma maneira muito clara de listar os componentes de um aplicativo. Mas é possível. Execute o seguinte comando:

adb shell dumpsys package

Um monte de texto será retornado.

  • Role até encontrar o Tabela do solucionador de atividades título para ver as atividades.
  • Olhe sob Tabela de resolução do receptor para BroadcastReceivers.
  • Verifica a Tabela de resolução de serviço para Serviços.
  • E assim por diante.

Cada componente mostrará a ação necessária para iniciá-lo, o nome do componente e possivelmente algumas informações extras.

Alternativamente, se você quiser uma maneira mais fácil de ver atividades, serviços e receptores, você pode usar o aplicativo Root Activity Launcher do XDA Recognized Developer Zacharee1. Ele mostrará esses componentes para cada aplicativo, junto com vários outros recursos úteis.

Iniciador de atividades raizDesenvolvedor: Zachary Wander

Preço: 0,99.

Download

Lançamento de atividades, serviços e receptores de transmissão

O ADB também pode ser usado para iniciar atividades, iniciar serviços e notificar BroadcastReceivers. Você pode até especificar URIs de dados e extras de intenção, se necessário.

Para iniciar componentes, você precisará do nome do componente que deseja iniciar. Você pode ver como conseguir isso no Listando componentes do aplicativo seção.

A sintaxe do comando para iniciar uma atividade é mais ou menos assim:

am start -a <action> -n <component>

A sintaxe do comando para iniciar um serviço é mais ou menos assim:

am startservice -a <action> -n <component>

A sintaxe do comando para notificar um BroadcastReceiver é mais ou menos assim:

am broadcast -a <action> -n <component>

Na maioria dos casos, para Atividades e Serviços, não é necessário especificar explicitamente uma ação. Normalmente, você só precisará dele se o componente usar outro que não seja android.intent.action. PRINCIPAL.

Além da sintaxe básica, veja como especificar mais dados para passar. Em geral, todos os valores de dados devem ser colocados entre aspas duplas.

  • -d permite que você especifique um URI de dados.
  • -e ou --es permite que você especifique uma String extra.
  • --esn permite que você especifique uma String nula extra.
  • --ez é usado para especificar um extra booleano.
  • --ei é usado para especificar um número inteiro extra.
  • --el é para especificar um extra longo.
  • --ef passará um float extra.
  • --UE passa um URI extra.
  • --ecn pode ser usado para especificar um nome de componente extra.
  • --eia ,,... passará os valores como um Integer[] extra.
  • --eial ,,... passará os valores como uma lista.
  • Os mesmos argumentos de array e lista também funcionam para longs, floats e Strings. Basta substituir o eu com a letra apropriada.
  • -f permite que você especifique um sinalizador.

Existem ainda mais opções de comportamento que você pode usar, então verifique a documentação integrada para obter detalhes.

Desativando e ativando quase todos os aplicativos

Os aplicativos do sistema no Android não podem ser desinstalados e, infelizmente, muitos deles também não podem ser desativados nas Configurações. Embora o ADB não permita desinstalá-los, pode ajudá-lo a desativá-los.

Primeiro, certifique-se de obter o nome do pacote do aplicativo que deseja desativar. Então, tente estes comandos. Se alguma falhar, tente a próxima opção.

  • pm desabilitar
    • Para reativar, use pm ativar
  • pm desabilitar-usuário --usuário 0
    • Para reativar, use pm ativar
  • pm ocultar
    • Para reativar, use pm exibir
  • pm suspender
    • Para reativar, use pm cancelar suspensão
  • pm desinstalar -k --user 0
    • Para reativar, use pm instalar-existente
      • Este desinstala efetivamente o aplicativo do seu perfil de usuário. Enquanto o comando para reativar deve funcionar, não há garantia de que funcionará. Pode ser necessário redefinir os padrões de fábrica para restaurar o aplicativo.
      • Se você estiver usando vários perfis de usuário em seu dispositivo, substitua 0 nos comandos acima pelo ID de usuário real que você possui.

Para saber mais, confira nosso tutorial em como desinstalar bloatware de operadora e OEM sem acesso root.

Capturando capturas de tela

A maioria das ROMs do Android oferece dois utilitários de shell úteis - screencap e screenrecord - para fazer capturas de tela e gravar atividades na tela, respectivamente. Você pode chamá-los diretamente do shell ADB para capturar uma captura de tela estática ou um trecho de vídeo da tela do telefone e salvá-lo diretamente no armazenamento interno do dispositivo.

A sintaxe para capturar uma captura de tela é bastante direta:

adb shell screencap /sdcard/screenshot.png

Da mesma forma, se você precisar capturar uma captura de tela dinâmica, faça o seguinte:

adb shell screenrecord /sdcard/recording.mp4

Como você pode esperar, a ferramenta screencap é bastante simples, enquanto o utilitário screenrecord oferece vários parâmetros. As opções para este último são as seguintes:

  • --size LARGURAxALTURA
    • Defina a resolução do arquivo de vídeo (por exemplo, "1280x720"). Por padrão, ele tenta usar a resolução de exibição principal do dispositivo de destino (se compatível) e volta para 1280x720, caso contrário.
  • --Taxa de taxa de bits
    • Defina a taxa de bits do vídeo, em bits por segundo. O valor pode ser especificado como bits ou megabits, por ex. '4000000' é equivalente a '4M'.
  • --relatório de erro
    • Você pode adicionar informações adicionais, como uma sobreposição de carimbo de data/hora, que pode ser útil para ilustrar bugs.
  • --time-limit TEMPO
    • Defina o tempo máximo de gravação, em segundos. O padrão/máximo é 180.
  • --display-idID
    • Especifique o ID de exibição física a ser registrado. O padrão é definido para a exibição principal. Consulte "dumpsys SurfaceFlinger --display-id" para obter IDs de exibição válidos.
  • --verbose
    • Exiba informações detalhadas sobre a sessão de gravação.

Você pode ampliar ainda mais os recursos dos utilitários de captura de tela integrados do Android, scrcpy. É uma solução de espelhamento de tela de código aberto, que utiliza o poder do ADB.

Transferindo dados binários entre o PC e o dispositivo Android

Caso você não queira gerar um shell ADB completo, mas queira incorporar a passagem simplificada de dados binários entre o PC host e o dispositivo Android de destino, você pode usar o exec-in e exec-out comandos.

Apesar de sua existência prolongada, os comandos exec-in e exec-out ainda não estão documentados. Eles podem levar à corrupção de arquivos devido à maneira como diferentes shells lidam com entradas e saídas. Use com cuidado.

O primeiro ajuda você a executar um comando no Android e alimentar a entrada não filtrada do console como parâmetro, enquanto o o segundo faz exatamente o oposto, ou seja, executa um comando no Android e captura sua saída binária não filtrada pelo sistema operacional host.

Exemplo:

adb exec-out "screencap -p" > "D:\screenshot.png"

Isso usará o screencap comando do Android para capturar uma captura de tela da tela do telefone, mas salva-a diretamente como screenshot.png na partição D: do PC host (desde que esteja executando o Windows). Por outro lado,

adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"

Isso extrairá o conteúdo do arquivo backup.tar armazenado na partição D: do PC host (executando Windows) na raiz do armazenamento interno do dispositivo Android.


ADB é uma ferramenta incrivelmente poderosa e pode fazer muito mais do que apenas o que está acima. Os comandos neste artigo são apenas um ponto de partida útil. Para um uso mais avançado, verifique comandos como cmd -l para ver diferentes serviços com os quais você pode interagir e ls -l /sistema/bin para ver os diferentes executáveis ​​de comando disponíveis em sua ROM do Android.

Para outras viagens e ticks do Android, confira nossos guias em como fazer root no seu smartphone Android, como instalar a recuperação TWRP, e como instalar uma ROM personalizada em seu dispositivo Android.