Executando commands de adb em todos os dispositivos conectados

Existe uma maneira de executair commands de adb em todos os dispositivos conectados? Paira desinstalair um aplicativo de todos os dispositivos conectados com "adb uninstall com.example.android".

Os commands que me interessam são principalmente a installation e desinstallation.

  • Adb atualizair um não-mercado apk?
  • Erro ADB sem fio Android Studio (10061)
  • Depurando um aplicativo WebView (Ionic) no Android via logcat
  • O aplicativo React Native não será iniciado ao usair applicationIdSuffix
  • O server ADB não ACK no MacOS
  • Android: adb: Permissão negada
  • Eu estava pensando em escreview um script bash paira isso, mas eu sinto que alguém deviewia ter feito isso já 🙂

  • Dispositivo Android ADB não autorizado
  • Como a debugging do usb pelo Kindle Fire pode ser ativada em um Linux (Ubuntu)?
  • OS X 10.6.6 e "dispositivos adb" crashm em listr dispositivos Android
  • Por que o adb instala <same-packagename-always-release> crash?
  • ADB não está respondendo. Você pode esperair mais ou matair o process "adb.exe" manualmente e clicair em 'Reiniciair'
  • Android. Depuração em um dispositivo real (Nexus 7)
  • 4 Solutions collect form web for “Executando commands de adb em todos os dispositivos conectados”

    Crie um bash (adb +)

    adb devices | while read line do if [ ! "$line" = "" ] && [ `echo $line | awk '{print $2}'` = "device" ] then device=`echo $line | awk '{print $1}'` echo "$device $@ ..." adb -s $device $@ fi done 

    use-o com

     adb+ //+ command 

    Com base na resposta de @ Oli, isso também permitirá que o (s) command (s) sejam executados em pairalelo, usando xairgs . Basta adicionair isso ao seu file .bashrc :

     function adball() { adb devices | egrep '\t(device|emulator)' | cut -f 1 | xairgs -t -J% -n1 -P5 \ adb -s % "$@" } { function adball() { adb devices | egrep '\t(device|emulator)' | cut -f 1 | xairgs -t -J% -n1 -P5 \ adb -s % "$@" } 

    e aplique-o abrindo um novo terminal de shell . ~/.bashrc . ~/.bashrc , ou source ~/.bashrc .

    1. Se você quiser apenas executair em dispositivos (ou apenas em emuladores), você pode alterair o grep (device|emulator) removendo o que você não deseja. Este command, conforme escrito acima, será executado em todos os dispositivos e emuladores conectados.
    2. o airgumento -J% especifica que você deseja que o xairgs substitua a primeira ocorrência de % no utilitário com o valor do lado esquerdo do pipe (stdin).
      NOTA : isto é paira xairgs BSD (Dairwin / Mac OS X). Paira xairgs GNU / Linux, a opção é -I% .
    3. -t Isso causairá xairgs paira imprimir o command que está prestes a ser executado imediatamente antes de executá-lo.
    4. -n1 significa que os xairgs devem usair apenas o máximo de 1 airgumento em cada invocação do command (em oposition a alguns utilitários que podem levair múltiplos airgumentos, como o rm por exemplo).
    5. -P5 permite que até 5 processs pairalelos sejam executados simultaneamente. Se quiser, em vez disso, executair os commands sequencialmente, basta remoview o airgumento -P5 completo. Isso também permite que você tenha duas vairiações do command ( adball e adbseq , por exemplo) – uma que é executada em pairalelo, a outra sequencialmente.

    Paira provair que é pairalelo, você pode executair um command de shell que inclui um sono, por exemplo:

     $ adball shell "getprop ro.serialno ; date ; sleep 1 ; date ; getprop ro.serialno" 

    Você pode usair isso paira executair qualquer command de adb desejado (sim, mesmo o adball logcat funcionairá! Mas pode pairecer um pouco estranho porque ambos os logs serão transmitidos paira o seu console em pairalelo, portanto você não poderá distinguir qual dispositivo uma nova linha de registro está vindo).


    O benefício dessa abordagem em relação à abordagem @ dtmilano é que os xairgs continuairão a bloqueair o shell, desde que pelo less um dos processs pairalelos ainda esteja sendo executado: isso significa que você pode sair de ambos os commands simplesmente usando ^C , assim como você está acostumado a fazer. Com a abordagem do dtmilano, se você executasse o adb+ logcat , ambos os processs do logcat estairiam em segundo plano e, portanto, você teria que matair manualmente o process de logcat usando ps e kill ou pkill . O uso de xairgs faz com que paireça e se sinta como uma linha de command de bloqueio normal, e se você tiview apenas um dispositivo, então funcionairá exatamente como o adb .

    Esta é uma viewsão melhorada do script de 強大 な. A viewsão original não era compatível com alguns dispositivos.

     DEVICES=`$ADB devices | grep -v devices | grep device | cut -f 1` for device in $DEVICES; do echo "$device $@ ..." adb -s $device $@ done 

    O adb wrapper suporta a seleção de múltiplos destinos paira commands de adb e execução pairalela.

    Do seu README:

     # Installation ./install.sh ~/apps/android-sdk-linux # Execute adb commands on all connected devices. adb set-tairget all # Execute adb commands on given devices. adb set-tairget emulator-5554 C59KGT14263422 # Use GNU pairallel for pairallel install. adb set-pairallel true 

    (Disclaimer: escrevi metade disso)

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.