$ adb --help
...
-s SERIAL use device with given serial (overrides $ANDROID_SERIAL)
...
$ adb devices List of devices attached emulator-5554 device 7f1c864e device
...
$ adb shell -s 7f1c864e error: more than one device and emulator
?
Verwenden Sie die -s
Option VOR dem Befehl, um das Gerät anzugeben, zum Beispiel:
adb -s 7f1c864e shell
Siehe auch http://developer.android.com/tools/help/adb.html#directingcommands
adb -s 192.168.56.101:5555 shell
adb -e shell
oderadb emu <command>
. Sie werden scheitern , wenn es mehr als einen Emulator los und Sie werden wieder fallen müssen-s
-s
Option vorher verwenden müssenshell
. Es ist eine sehr schlechte Benutzererfahrung, dass Sie dies nicht umgekehrt tun können ...adb -d shell
(oderadb -e shell
).Dieser Befehl hilft Ihnen in den meisten Fällen, wenn Sie zu faul sind, um die vollständige ID einzugeben.
Von http://developer.android.com/tools/help/adb.html#commandsummary :
quelle
-d
ist für "Gerät" und-e
für "Emulator" . Und wenn Sie das bereits herausgefunden haben, klopfen Sie sich auf den Rücken. ;)Eine andere Alternative wäre, die Umgebungsvariable ANDROID_SERIAL auf die entsprechende Seriennummer zu setzen, vorausgesetzt, Sie verwenden Windows:
Dann können Sie
adb.exe shell
ohne Probleme verwenden.quelle
set ANDROID_SERIAL=7f1c864e
, dh. ohne Anführungszeichen.export ANDROID_SERIAL=7f1c864e
.Ich habe diese Frage gefunden, nachdem der Fehler "Mehr als ein Gerät" mit 2 Offline-Telefonen angezeigt wurde:
Wenn Sie nur ein Gerät angeschlossen haben, führen Sie die folgenden Befehle aus, um die Offline-Verbindungen zu entfernen:
quelle
adb kill-server
behebt das Problem mit Offline-EmulatorenDiese Übersicht erledigt den größten Teil der Arbeit für Sie, indem Sie ein Menü anzeigen, wenn mehrere Geräte angeschlossen sind:
Um eine Eingabe zu vermeiden, können Sie einfach einen Alias erstellen, der die Geräteauswahl enthält, wie hier erläutert .
quelle
Der Benutzer
@janot
hat dies oben bereits erwähnt, aber ich habe einige Zeit gebraucht, um die beste Lösung zu filtern.Es gibt zwei allgemeine Anwendungsfälle:
1) 2 Hardware sind angeschlossen, der erste ist der Emulator und der andere ist ein Gerät.
Lösung :
adb -e shell....whatever-command
für Emulator undadb -d shell....whatever-command
für Gerät.2) n Anzahl der Geräte (alle Emulatoren oder Telefone / Tablets) über USB / ADB-WiFi verbunden:
Lösung : Schritt 1) Ausführen
adb devices
Dies gibt Ihnen eine Liste der aktuell angeschlossenen Geräte (über USB oder ADBoverWiFI).Schritt 2) Jetzt ausgeführt,
adb -s <device-id/IP-address> shell....whatever-command
egal wie viele Geräte, die Sie haben.Beispiel
zum Löschen von App-Daten auf einem Gerät, das über WLAN-ADB verbunden ist Ich würde Folgendes ausführen:
adb -s 172.16.34.89:5555 shell pm clear com.package-id
Um App-Daten zu löschen, die auf meinem USB-Gerät verbunden sind, würde ich Folgendes ausführen:
adb -s 5210d21be2a5643d shell pm clear com.package-id
quelle
So installieren Sie eine apk auf einem Ihrer Emulatoren:
Holen Sie sich zuerst die Liste der Geräte:
Dann installiere die apk auf deinem Emulator mit dem
-s
Flag:Hoffe das hilft jemandem!
quelle
Ausführen von ADB-Befehlen auf allen angeschlossenen Geräten
Erstellen Sie eine Bash (adb +)
fertig benutze es mit
Befehl adb + // +
quelle
Für Windows finden Sie hier ein kurzes Beispiel für die Installation einer Datei auf mehreren Geräten
Wenn Sie dies in eine Batchdatei aufnehmen möchten, ersetzen Sie% x wie unten beschrieben durch %% x
quelle
Erstellen Sie einen Bash (tools.sh), um eine Seriennummer von Geräten (oder Emulatoren) auszuwählen:
Dann kann in einer anderen Option verwendet werden
adb -s
(globale Option - verwendet Gerät mit der angegebenen Seriennummer, die $ ANDROID_SERIAL überschreibt):Ich habe diesen Code auf dem MacOS-Terminal getestet, aber ich denke, er kann unter Windows im Git Bash Terminal verwendet werden.
Denken Sie auch daran, Umgebungsvariablen und Android SDK-Pfade in der
.bash_profile
Datei zu konfigurieren :quelle
fxMenu
undfxValidatonNumberMenu
dienen nur als Referenz. Ich hatte es kommentiert, um Fehlercodes zu vermeiden. Sie können eine vollständige Implementierung in meinem Repository sehen: github.com/equiman/hardhatmac/blob/master/tools.shDer beste Weg, um Shell auf einem bestimmten Gerät auszuführen, ist die Verwendung von:
Funktioniert zu 100%
Bitte geben Sie es ein Schlag auf
quelle
Hier ist ein Shell-Skript, das ich für mich selbst erstellt habe:
quelle