Comment puis-je adb installer un apk à de multiples appareils connectés?
J'ai 7 appareils branchés sur ma machine de développement.
Normalement, je ne adb install <path to apk>
et peut installer d'un seul appareil.
Maintenant je voudrais installer mon apk sur tous mes 7 appareils connectés. Comment puis-je le faire en une seule commande? J'aimerais exécuter un script peut-être.
- uninstallapp.rb gist.github.com/XinyueZ/2d61133b6acbde19f3c5 installapk.rb gist.github.com/XinyueZ/2128a11e174141908728
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
adb devices
pour obtenir une liste des périphériques connectés, puis exécutezadb -s DEVICE_SERIAL_NUM install...
pour chaque périphérique répertorié.Quelque chose comme (bash):
Observations suggèrent que ce pourrait fonctionner mieux pour les versions plus récentes:
Pour Mac OSX(pas testé sur Linux):
xargs: illegal option -- i usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr] [-L number] [-n number [-x]] [-P maxprocs] [-s size] [utility [argument ...]]
-iX
avec-I X
...
avec votre APK nom? Essayez de remplacer le tout dernieradb
appel avececho X
pour s'assurer qu'il imprime les valeurs que vous attendez.adb devices | tail -n +3 | cut -sf 1 -d " " | xargs -I X echo X -s X install SONR
ne pas imprimer quoi que ce soitadb devices
? Ne bad même voir vos appareils?cut -sf 1 -d " "
, Si je lance./adb devices | tail -n +2 | cut -sf 1 -d " "
je ne reçois rien. Si je lance./adb devices | tail -n +2
- je obtenir 4 périphériques connectés, sans l'en-tête.-d " "
, comme (au moins dans monadb
de sortie) le séparateur est un onglet, pas un espace.Les autres réponses ont été très utile, cependant, n'a pas tout à fait faire ce dont j'avais besoin. Je pensais que je poste ma solution (un script shell) dans le cas où il fournit plus de clarté pour les autres lecteurs. Il installe plusieurs apk et tout mp4s
Je vous remercie pour toutes les autres réponses qui m'a à ce point.
Voici une fonctionnelle de la ligne de commande sur mesure à partir de kichik réponse (merci!):
Mais si vous arrive d'être en utilisant Maven c'est encore plus simple:
Une autre option courte... je suis tombé sur cette page pour apprendre que le
-s $SERIAL
doit venir avant la bad commande! Grâce stackoverflow!Généralisée solution de Dave Owens pour exécuter n'importe quelle commande sur tous les appareils:
Le mettre dans un script comme "adb_all" et de l'utiliser même manière que la bad pour un seul appareil.
Une autre bonne chose que j'ai trouvé est à fourche processus d'arrière-plan pour chaque commande, et attendre leur achèvement:
Alors vous pouvez facilement créer un script pour installer l'application et de commencer l'activité
~/bin
dossier.J'ai aimé workingMatt du script mais pensé qu'il pourrait être amélioré un peu, voici ma version modifiée:
Ma version fait la même chose, sauf:
Il y a peu de moyens, il pourrait encore être amélioré, mais je suis assez heureux avec elle.
La commande suivante devrait fonctionner:
bad appareils retourne la liste des périphériques. Utilisation tail-n +2 pour démarrer à partir de la 2ème ligne et head-n -1 pour supprimer la dernière ligne vide à la fin. La tuyauterie par coupe à l'onglet par défaut délimiteur nous obtient de la première colonne sont les feuilletons.
xargs est utilisé pour exécuter la commande adb pour chaque série. Supprimer l'option-r, si vous n'êtes pas d'une ré-installation.
Avec ce script il vous suffit de faire:
Propre, simple.
Si vous ne voulez pas utiliser les appareils qui n'ont pas activé la bad; ce
Mac/Linux
Utiliser cet utilitaire de ligne de commande: bad-foreach
Avec Android Debug Bridge version 1.0.29, essayez cette script bash:
Ne sais pas si il fonctionne avec les versions antérieures.
PowerShell solution
Mettre ceci dans votre fichier de profil (
notepad $PROFILE
), redémarrez votre coquille et vous pouvez appeler les installations avec :La clé est de lancer
adb
dans un processus séparé (&).Je suis venu avec le script suivant simultanément incendie-installation sur tous les appareils connectés de la mine et, enfin, le lancement de l'application installée sur chacun d'eux:
Note 1: le STDOUT et STDERR sont supprimées. Vous ne verrez pas de "bad installer" résultat de l'opération. Cela peut être amélioré, je suppose, si vous avez vraiment de
Note 2: vous pouvez également améliorer script en fournissant des arguments au lieu de codé en dur chemin d'accès et le nom des activités.
De cette façon, vous:
Origine à partir d'ici: Faire Le Post Précédent, Une Masse APK Installer, Qui N'Utilise ADB Install-Multi Syntaxe
Cette commande fonctionne parfaitement
adb devices | awk 'NR>1{print $1}' | xargs -n1 -I% adb -s % install foo.apk
Puisque je ne peux pas commenter la réponse de @Tom, cela a fonctionné pour moi sur OSX 10.13
(Modifier le peu que j'ai à un grand I)
bien c'est simple, vous pouvez créer un installapk.fichier bat qui peut faire le travail de plusieurs apk pour de multiples appareils connectés à open installapk.bat avec notepad++ et copiez-collez ce code
-Obtenir toutes les
apk
stockées dans.apk
dossier-Installer et remplacer app sur les appareils