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

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

Links Rápidos

  • Acesso ao shell
  • Conectando 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 qualquer aplicativo
  • Captura de tela
  • Transferindo dados binários entre o PC e o dispositivo Android

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

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 carregar um aplicativo ou ajustar 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 adb Se precisar de ajuda. Caso esteja usando o Windows, você também precisa instale os drivers USB OEM apropriados para o seu dispositivo Android.

Acesso ao shell

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

No seu terminal ou na janela do prompt de comando:

adb shell

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

Conectando a vários dispositivos

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:

dispositivos adb

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

adb-s <serialnúmero> concha

Transferindo arquivos

Para os aficionados da linha de comando, o ADB fornece uma maneira muito fácil de transferir arquivos de e para o seu dispositivo Android. Basta usar o puxar comando para copiar arquivos e diretórios do dispositivo e o empurrar 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 seguinte comando 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 oferece suporte à exibição de logs do seu dispositivo em tempo real. No entanto, não é exatamente útil para processamento em lote. Felizmente, os dispositivos Android são fornecidos com o comando logcat disponível por meio 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 sobre 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 referência ao LOLcat meme. Dá a mesma saída que o comando logcat normal.
    adb lolcat
  2. O segundo é longcat, que é equivalente ao comando logcat -v long. Ele exibe todos os campos de metadados e mensagens separadas com uma linha em branco.
    adb gato longo

Listando aplicativos instalados por meio do ADB

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

adb shell pm lista pacotes

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

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 básico de cada aplicativo, juntamente 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 do instalador para cada pacote.
  • -VOCÊ incluirá o UID do pacote para cada pacote.
  • -você incluirá pacotes desinstalados.
  • --show-versioncode incluirá o código da versão para cada pacote.
  • --apex-somente só retornará pacotes APEX.
  • --uid mostrará apenas pacotes com o UID fornecido.
  • --do utilizador mostrará apenas os 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 formas, 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:

adbinstalar-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 A opção permite que o ADB instale sobre um aplicativo existente (ou seja, atualização). No Android Pie e posterior, você não precisa especificar essa opção.
  • O -R opção, para Android Pie e posterior fará com que a instalação falhe se o aplicativo já estiver instalado.
  • O -eu A opção permite especificar um nome de pacote do instalador. Isso é o que é retornado se o Android quiser saber o que instalou o APK.
  • O -t opção permite um APK com android: testOnly="true" em seu manifesto para ser instalado.
  • O -d A 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 você quiser uma lista completa, pode verificar a documentação integrada.

Vários APKs e pacotes

Se você tiver vários APKs que deseja instalar de uma só vez, seja de vários aplicativos ou porque está instalando um pacote de aplicativos, pode usar o ADB's instalação múltipla e instalar vários pacotes características.

Se todos os seus APKs forem para um aplicativo, use instalação múltipla:

adbinstalação múltiplaapk1.apkapk2.apk ...

Caso contrário, use instalar vários pacotes:

adbinstalar vários pacotesapp1.apkapp2.apk ...

As opções para esses comandos são semelhantes às instalar, 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 o ADB, você precisará do nome do pacote do aplicativo que deseja desinstalar. Confira a seção de Listando aplicativos instalados se você ainda não o fez.

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

adb desinstalar <nome do pacote>

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

Extraindo APKs com ADB

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

Extrair um aplicativo usando o 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 obter o nome do pacote, execute o seguinte comando:

adb shell pm path <nome do pacote>

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

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

adb pull /caminho/para/apk.apk

Fazendo backup e restaurando dados do aplicativo

Embora o Google ainda não tenha criado 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. Porém, 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 cópia de segurança -apk <pacotenome> -f package_name_backup.ab

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

adb cópia de segurança -f todos -todos -apk -nosystem

Como o módulo de restauração não pode executar restauração específica de aplicativo individual, é melhor criar backups específicos de pacote. O trecho de comando a seguir (compatível com Linux/macOS e Windows Subsystem for Linux) pode fazer isso por você:

para APLICATIVO em $(adb shell pm listar pacotes -3)
fazer
APP=$( eco${APP} | sed "s/^pacote://")
adb backup -f ${APP}.cópia de segurança ${APP}
feito

Restaurar

Primeiro, você precisa instalar o APK salvo;

adb instalar <pacotenome>.apk

Então você pode restaurar seus dados:

adbrestaurarpackage_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 coisas como Activities, BroadcastReceivers, Services 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 pacote

Um monte de texto será retornado.

  • Role até encontrar o Tabela de resolução 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.

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

Iniciador de atividade 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 Activities, iniciar Services e notificar BroadcastReceivers. Você pode até especificar URIs de dados e extras de intenção, se necessário.

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

A sintaxe do comando para iniciar uma atividade é algo como isto:

sou start -a <Ação> -n <componente>

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

sou startservice -a <Ação> -n <componente>

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

sou transmissão -a <Ação> -n <componente>

Na maioria dos casos, para Atividades e Serviços, você não precisa especificar uma ação explicitamente. 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 um String extra.
  • --esn permite que você especifique uma String nula extra.
  • --ez é usado para especificar um extra booleano.
  • --ei é usado para especificar um inteiro extra.
  • --el é para especificar um extra longo.
  • --ef passará uma bóia 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, portanto, verifique a documentação integrada para obter detalhes.

Desativando e ativando quase qualquer aplicativo

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 que você os desinstale, pode ajudá-lo a desativá-los.

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

  • pm desabilitar
    • Para reativar, use pm habilitar
  • pm desabilitar-usuário --usuário 0
    • Para reativar, use pm habilitar
  • pm esconder
    • Para reativar, use pm mostrar
  • pm suspender
    • Para reativar, use pm cancelar suspensão
  • pm desinstalar -k --user 0
    • Para reativar, use pm install-existente
      • Este efetivamente desinstala 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 fazer uma redefinição de fábrica para restaurar o aplicativo.
      • Se você estiver usando vários perfis de usuário em seu dispositivo, certifique-se de substituir 0 nos comandos acima pelo ID de usuário real que você possui.

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

Captura 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:

captura de tela adb shell /sdcard/screenshot.png

Da mesma forma, se você precisar fazer 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:

  • --tamanho LARGURA x ALTURA
    • Defina a resolução do arquivo de vídeo (por exemplo, "1280x720"). Por padrão, ele tenta usar a resolução da tela principal do dispositivo de destino (se compatível) e, caso contrário, cai para 1280x720.
  • --taxa de bits TAXA
    • Defina a taxa de bits do vídeo, em bits por segundo. O valor pode ser especificado como bits ou megabits, por exemplo '4000000' é equivalente a '4M'.
  • --relatório de erro
    • Você pode adicionar informações adicionais, como uma sobreposição de registro de data e hora, que pode ser útil para ilustrar bugs.
  • --time-limit TIME
    • Defina o tempo máximo de gravação, em segundos. Padrão/máximo é 180.
  • --display-id ID
    • 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 IDs de exibição válidos.
  • --verbose
    • Exibir informações detalhadas sobre a sessão de gravação.

Você pode estender 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 gostaria de incorporar passagem simplificada de dados binários entre o PC host e o dispositivo Android de destino, você pode usar o entrada executiva e exec-out comandos.

Apesar de seus 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 seu 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 executivo-fora "captura de tela -p" > "D:\captura de tela.png"

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

adb executivo-em"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 uso mais avançado, confira 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 Android.

Para outras viagens e tiques 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 no seu dispositivo Android.