800 Stimmen

Wie verwendet man ADB Shell, wenn mehrere Geräte angeschlossen sind? Schlägt fehl mit "Fehler: mehr als ein Gerät und Emulator"

$ 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

16voto

Shivam Bharadwaj Punkte 1554

Die beste Möglichkeit, die Shell auf einem bestimmten Gerät auszuführen, ist die Verwendung:

adb -s << emulator UDID >> shell

For Example:
adb -s emulator-5554 shell

12voto

zeitgeist Punkte 562

Gemäß https://developer.Android.com/studio/command-line/adb#directingcommands

Das hat bei meinen Tests funktioniert:

UBUNTU BASH TERMINAL:

$ adb devices
List of devices attached 
646269f0    device
8a928c2 device
$ export ANDROID_SERIAL=646269f0
$ echo $ANDROID_SERIAL
646269f0
$ adb reboot bootloader

Windows-Befehl PROMPT:

$ adb devices
List of devices attached 
646269f0    device
8a928c2 device
$ set ANDROID_SERIAL=646269f0
$ echo $ANDROID_SERIAL$
646269f0
$ adb reboot bootloader

Dadurch können Sie normale Befehle und Skripte verwenden, als ob nur das Gerät ANDROID_SERIAL angeschlossen wäre.

Alternativ können Sie auch jedes Mal die Seriennummer des Geräts angeben.

$ adb -s 646269f0 shell

7voto

Diego Torres Milano Punkte 60646

Este . nimmt Ihnen die meiste Arbeit ab und zeigt ein Menü an, wenn mehrere Geräte angeschlossen sind:

$ adb $(android-select-device) shell
1) 02783201431feeee device 3) emulator-5554
2) 3832380FA5F30000 device 4) emulator-5556
Select the device to use, <Q> to quit:

Um Tipparbeit zu vermeiden, können Sie einfach einen Alias erstellen, der die Geräteauswahl wie folgt enthält aquí .

6voto

sud007 Punkte 5117

Benutzer @janot hat dies bereits oben erwähnt, aber ich habe einige Zeit gebraucht, um die beste Lösung herauszufiltern.

Es gibt zwei allgemeine Anwendungsfälle:

1) Es sind 2 Geräte angeschlossen, das erste ist ein Emulator und das andere ist ein Gerät.
Lösung : adb -e shell....whatever-command für den Emulator und adb -d shell....whatever-command für das Gerät.

2) n Geräte sind über USB/ADB-WiFi angeschlossen (alle Emulatoren oder Telefone/Tablets):

Lösung : Schritt1) laufen adb devices Dadurch erhalten Sie eine Liste der derzeit angeschlossenen Geräte (über USB oder ADBoverWiFI)
Schritt2) jetzt ausführen adb -s <device-id/IP-address> shell....whatever-command unabhängig davon, wie viele Geräte Sie haben.

Ejemplo
zum Löschen von App-Daten auf einem über WLAN verbundenen Gerät würde ich ADB ausführen:
adb -s 172.16.34.89:5555 shell pm clear com.package-id

zum Löschen von App-Daten auf meinem über USB angeschlossenen Gerät würde ich ausführen:
adb -s 5210d21be2a5643d shell pm clear com.package-id

5voto

zingh Punkte 384

Für Windows finden Sie hier ein kurzes Beispiel, wie Sie eine Datei auf mehreren Geräten installieren können

FOR /F "skip=1"  %x IN ('adb devices') DO start adb -s %x install -r myandroidapp.apk

Wenn Sie dies in eine Stapeldatei einfügen möchten, ersetzen Sie %x durch %%x, wie unten beschrieben

FOR /F "skip=1"  %%x IN ('adb devices') DO start adb -s %%x install -r myandroidapp.apk

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X