Programa Android Debug Bridge (ADB no Linux Debian





  • Comando: adb -e
  • Comando: adb -d
  • Comando: adb install
  • Comando: adb kill-server
  • Comando: adb shell
  • Comando:adb list-disks
  • Comando adb shell sm
  • Exemplo para formatar um cartão microSD
  • Referencias



    1. CONTEÚDO

      1. Objetivo.
        1. Este documento ensina como configurar o computador Linux Debian para acessar um celular androide para formatar cartão de memória, instalar pacotes que não esteja na Play Store, fazer cópia de dados entre muitas outras tarefas que se possa fazer em um shell do sistema oracional androide.
      2. O que é ADB Shell.
        1. O Android Debug Bridge (adb) Shell é uma ferramenta de linha de comando versátil que permite a comunicação com uma instância de emulador ou com um dispositivo Android conectado. Ele facilita uma variedade de ações de dispositivo, como instalar e depurar aplicativos, e fornece acesso a um shell Unix que pode ser usado para executar diversos comandos em um emulador ou dispositivo conectado. Ele é um programa cliente-servidor com três componentes:
          1. Um cliente, que envia comandos. Obs: O cliente é executado no computador de desenvolvimento e você pode emitir um comando adb para invocar o cliente de um terminal de linha de comando.
          2. Um daemon, que executa comandos em um dispositivo. Obs: Um daemon é executado como um processo de segundo plano em cada instância de emulador ou dispositivo.
          3. Um servidor, que gerencia a comunicação entre o cliente e o daemon. Obs: O servidor é executado como um processo de segundo plano em seu computador de desenvolvimento.
          4. A ferramenta adb se localiza em android_sdk/platform-tools/.
      3. Como instalar ADB Shell e suas dependência?
        1. O Linux Debian possui em seu repositório padrão os programas do androide necessários para acessar o celular em um ambiente Debian. A instalação dos programas abaixo, podem ser instalados com auxilio do gerenciador de pacotes SYNAPTIC ou pelo terminal de comandos modo root.
          1. Instalação do pacote adb shell e suas dependências no terminal de comandos modo root:
            1. # su   
            2. # apt-get update  
            3. # apt-get install android-libbase android-libutils
            4. # apt-get install android-Liblog
            5. # apt-get install android-sdk-platform-tools-common
            6. # apt-get install adb
      4. Como o pacote adb shell funciona:
        1. Quando você inicia um cliente do adb shell, ele primeiro verifica se há um processo de servidor do add shell  em execução. Se não houver, ele inicia esse processo. Quando o servidor é iniciado, ele é vinculado à porta TCP 5037 local e escuta comandos enviados de clientes do add shell — todos os clientes do adb usam a porta 5037 para se comunicar com o servidor do adb shell.
        2. Em seguida, o servidor configura conexões com todas as instâncias de emulador/dispositivo em execução. Ele localiza as instâncias de emulador/dispositivo com uma varredura pelas portas ímpares no intervalo de 5555 a 5585, que é utilizado por emuladores/dispositivos. Onde o servidor encontrar um daemon do adb shell, ele configura uma conexão com a porta em questão. Observe que cada instância de emulador/dispositivo adquire um par de portas sequenciais — uma porta par para conexões de console e uma porta ímpar para conexões do adb shell. Por exemplo:
          1. Emulador 1, console: 5554
          2. Emulador 1, adb: 5555
          3. Emulador 2, console: 5556
          4. Emulador 2, adb: 5557
          5. e assim por diante.
        3. Conforme foi mostrado, a instância de emulador conectada ao adb pela porta 5555 é a mesma instância cujo console escuta na porta 5554.
        4. Quando o servidor configurar as conexões de todas as instâncias de emulador, será possível usar comandos do adb shell para acessar essas instâncias.
        5. Como o servidor gerencia as conexões com as instâncias de emulador/dispositivo e gerencia todos os comandos de vários clientes do adb shell, é possível controlar qualquer instância de emulador/dispositivo de qualquer cliente (ou de um script).
      5. Ative a depuração do adb no seu dispositivo.
        1. Para usar o adb com um dispositivo conectado por USB, você deve ativar a opção USB debugging nas configurações do sistema do dispositivo, em Developer options.
        2. No Android 4.2 e superior, a tela Developer options normalmente fica oculta por padrão. Para exibi-la, acesse a opçao Settings/About phone e toque em Build number cinco vezes. Retorne à tela anterior e verá a opção Developer options na parte inferior.
          1. Observação: Em alguns dispositivos, a tela Developer options pode ter uma localização ou um nome diferente.
        3. A partir de então será possível conectar o dispositivo por USB.
          1. Para verificar se o dispositivo está conectado, execute no terminal de  comandos o comando adb devices. Se ele estiver conectado, o "número de série" do dispositivo a a palavra “device” serão listados.
            1. Observação: ao conectar um dispositivo com Android 4.2.2 ou posterior, o sistema mostrará uma caixa de diálogo perguntando se o usuário deseja aceitar uma chave RSA que permite a depuração por meio do computador. Esse mecanismo de segurança protege dispositivos de usuários, garantindo que a depuração de USB e outros comandos do adb shell não sejam executados a não ser que o usuário desbloqueie o dispositivo e confirme a caixa de diálogo.
            2. .
        4. Para saber mais sobre a conexão com um dispositivo por USB, leia Execute aplicativos em um dispositivo de hardware.
        5. Configure seu sistema para detectar o dispositivo.
          1. Deve-se adicionar um arquivo de regras udev que contém uma configuração de USB para cada tipo de dispositivo que queira usar para desenvolvimento. No arquivo de regras, cada fabricante de dispositivo é identificado por um ID de fornecedor exclusivo, conforme especificado pela propriedade ATTR{idVendor}. Para obter uma lista de IDs de fornecedor, consulte IDs de fornecedores de USB em IDs de fornecedores de USB para configurar a detecção de dispositivos no Linux Ubuntu e Debian:
          2. Faça login como superusuário e crie este arquivo:
            /etc/udev/rules.d/51-android.rules
          3. Use este formato para adicionar cada fornecedor ao arquivo:
          4. SUBSYSTEM=="usb", ATTR{idVendor}=="número do fabricante", MODE="0666", GROUP="plugdev"
          5. Exemplo :
            1. Fabricante LG:
              1. SUBSYSTEM=="usb", ATTR{ idVendor}=="1004", MODE="0666", GROUP="plugdev"
            2. Fabricante Motorola:
              1. SUBSYSTEM=="usb", ATTR{ idVendor}=="22b8", MODE="0666", GROUP="plugdev"
            3. neste exemplo, o ID de fornecedor é da LG e Motorola respectivamente. A atribuição MODE especifica as permissões de leitura/gravação e GROUP define qual grupo Unix é proprietário do nó do dispositivo.
            4. Observação: a sintaxe das regras pode variar ligeiramente dependendo do ambiente. Consulte a documentação de udev para seu sistema conforme a necessidade. Para obter uma visão geral da sintaxe das regras, consulte este guia sobre como criar regras de udev.
        6. Agora, execute:
            1. # chmod a+r /etc/udev/rules.d/51-android.rules
        7. Observação: quando conectar um dispositivo com Android 4.2.2 ou superior ao seu computador, o sistema mostrará uma caixa de diálogo perguntando se você deseja aceitar uma chave RSA que permite a depuração no computador. Esse mecanismo de segurança protege dispositivos de usuários, garantindo que a depuração de USB e outros comandos do ADB não possam ser executados a não ser que você possa desbloquear o dispositivo e confirmar a caixa de diálogo. Isso exige que você tenha o ADB versão 1.0.31 (dispositivo com o SDK Platform-tools r16.0.1 e posteriores) para depurar em um dispositivo com Android 4.2.2 ou posterior.
        8. Quando estiver conectado por USB, você poderá verificar se o dispositivo está conectado executando adb devices no diretório platform-tools/ do SDK. Se estiver conectado, você verá o nome do dispositivo listado como “device”.
        9. Se estiver usando o Android Studio, execute ou depure seu aplicativo normalmente. Será exibida uma caixa de diálogo Device Chooser que lista os emuladores disponíveis e dispositivos conectados. Selecione o dispositivo no qual deseja instalar e executar o aplicativo.
        10. Se estiver usando o Android Debug Bridge (ADB), você poderá executar comandos com o sinalizador -d para direcioná-los ao dispositivo conectado.

        11. .
        12. .
      6. Consulte os dispositivos
        1. Comando: adb  devices. Antes de emitir comandos do adb, é útil saber quais instâncias de emulador/dispositivo estão conectadas ao servidor do adb. Para gerar uma lista de emuladores/dispositivos conectados, use o comando devices:
          1. # adb devices
          2. Obs:Na primeira execução apareceu  erro adb: malloc.c:3760: _int_malloc: Assertion `(unsigned long) (size) >= (unsigned long) (nb)' failed. para solucionar executei o comando:
                1. # adb kill-server
          3. Observação: Ao conectar o celular na USB é necessário confirmar no celular a conexão do computador. Do contrário a execução do comando adb devices aparecerá a mensagem:unauthorized
          4. Em resposta, o ADB exibe as seguintes informações de status para cada instância:
            1. Número de série — string gerada pelo ADB para identificar uma instância de emulador/dispositivo de forma exclusiva utilizando o número da porta do seu console. O formato do número de série é type-console-port. Veja um exemplo de número de série: emulator-5554.
            2. Status — O status da conexão da instância pode ser um dos seguintes:
            3. offline — a instância não está conectada ao adb ou não está respondendo.
            4. device — a instância está conectada ao servidor do adb. Observe que esse estado não implica que o sistema Android está totalmente inicializado, pois a instância se conecta ao adb enquanto o sistema está sendo inicializado. Entretanto, após a inicialização, esse é o estado operacional normal de uma instância de emulador/dispositivo.
            5. no device — não há uma instância de emulador/dispositivo conectada.
            6. Exemplo que mostra o comando devices e sua saída:
              1. $ adb devices
              2. $ List of devices attached
              3. $ emulator-5554  device
              4. $ emulator-5556  device
              5. $ 0037157968     device
        2. Comando adb -s (Envie comandos a um dispositivo específico)
          1. Se várias instâncias de emulador/dispositivo estiverem em execução, especifique uma instância de destino ao emitir comandos do ADB. Para fazer isso, use a opção -s nos comandos. O uso da opção -s é o seguinte:
            1. $ adb -s serial_number comman
          2. Conforme foi mostrado, você deve especificar a instância de um comando usando o número de série atribuído pelo adb. Você pode usar o comando devices novamente para obter os números de séries de instâncias de emulador/dispositivo em execução. Por exemplo:
            1. $ adb -s emulator-5556 install helloWorld.apk
              1. Observe que, se você emitir um comando sem especificar uma instância de emulador/dispositivo de destino enquanto vários dispositivos estiverem disponíveis, o adb gerará um erro.
        3. Comando adb -e
          1. Se você tiver vários dispositivos disponíveis (hardware ou emulados), mas apenas um for um emulador, use a opção -e para enviar comandos ao emulador.
        4. Comando adb -d
          1. Se houver vários dispositivos, mas apenas um dispositivo de hardware conectado, use a opção -d para enviar comandos ao dispositivo de hardware.
        5. Comando: adb install
          1. Você pode usar o ADB para copiar um aplicativo do seu computador de desenvolvimento e instalá-lo em uma instância de emulador/dispositivo. Para fazer isso, use o comando install. Com esse comando, você deve especificar o caminho do arquivo de APK que deseja instalar:
            1. $ adb install path_to_apk
              1. Para saber mais sobre a criação de um arquivo de APK que possa ser instalado em uma instância de emulador/dispositivo, consulte Compile e execute seu aplicativo.
          2. Observe que, se você estiver usando o Android Studio, não será preciso usar o adb (ou aapt) diretamente para instalar seu aplicativo no emulador/dispositivo. Em vez disso, o Android Studio realizará o empacotamento e a instalação do aplicativo.
        6. Comando: adb kill-server:
            1. Em alguns casos, é preciso encerrar o processo do servidor do ADB e reiniciá-lo para solucionar um problema (por exemplo, se o ADB não responder a um comando).
            2. Para interromper o servidor do ADB, use o comando adb kill-server. Em seguida, é possível emitir qualquer outro comando do ADB para reiniciar o servidor.
              1. $ adb kill-server
        7. Comando: adb shell
          1. Este programa abre um console do comandos do Linux Android do celular conectado, para que se possa executar os programas de console do celular.
            1. Observação 1: Muitos comandos do linux estão disponíveis no console adb shell , tais como clear, ls, rm, dmesg e etc...
            2. Observação 2: Para ver a documentação dos comandos use após o comando a palavra --help.
        8. Comando adb shell list-disks
          1. Usado para listar os cartões microSD instalados.
            1. Exemplo:
              1. adb shell list-disks
              2. Resultado:
                1. disk:179,64
            2. .
        9. Comando adb shell sm
          1. O comando adb shell sm é um utilitário usado para visualizar, criar partições e formatar um cartão microSD do celular.
          2. Opção
            1. usage:
               
                    sm list-disks [adoptable]
                    sm list-volumes [public|private|emulated|all]
                    sm has-adoptable
                    sm get-primary-storage-uuid
                    sm set-force-adoptable [true|false]
                    sm partition DISK [public|private|mixed] [ratio]
                    sm mount VOLUME
                    sm unmount VOLUME
                    sm format VOLUME
                    sm benchmark VOLUME
                    sm forget [UUID|all]
                    sm set-emulate-fbe [true|false]
        10. Exemplo para formatar um cartão microSD
          1. # adb shell
          2. sm list-disks
          3. sm partition <DISK> private
          4. reboots
          5. Substitua <DISK> pela saída do comando anterior (sm list-disks).
            1. Exemplo para formatar 100% do microSD:
              1. sm partition disk:179,64 private
            2.  Caso queira converte somente 50% do disco use esse comando:
              1. . sm partition disk:179,64 mixed 50
            1. adb shell sm set-force-adoptable true
        1. .
        2. .
        3. .
         

      Comentários