$ 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
?
Użyj -s
opcji PRZED poleceniem, aby określić urządzenie, na przykład:
adb -s 7f1c864e shell
Zobacz także http://developer.android.com/tools/help/adb.html#directingcommands
adb -s 192.168.56.101:5555 shell
adb -e shell
lubadb emu <command>
. Zawiodą, jeśli będzie więcej niż jeden emulator i będziesz musiał wrócić do-s
-s
opcji wcześniejshell
. To bardzo złe doświadczenie użytkownika, że nie można tego zrobić na odwrót ...adb -d shell
(lubadb -e shell
).To polecenie pomoże ci w większości przypadków, jeśli jesteś zbyt leniwy, aby wpisać pełny identyfikator.
Od http://developer.android.com/tools/help/adb.html#commands Podsumowanie :
źródło
-d
dla „urządzenia” i-e
dla „emulatora” . A jeśli już to rozgryzłeś, poklep się po plecach. ;)Inną alternatywą byłoby ustawienie zmiennej środowiskowej ANDROID_SERIAL na odpowiedni numer seryjny, przy założeniu, że korzystasz z systemu Windows:
Następnie możesz korzystać
adb.exe shell
bez żadnych problemów.źródło
set ANDROID_SERIAL=7f1c864e
, tj. bez cytatów.export ANDROID_SERIAL=7f1c864e
.Znalazłem to pytanie po zobaczeniu błędu „więcej niż jednego urządzenia”, gdy 2 telefony offline pokazują:
Jeśli masz podłączone tylko jedno urządzenie, uruchom następujące polecenia, aby pozbyć się połączeń offline:
źródło
adb kill-server
naprawia problem z emulatorami offlineTa lista wykona większość pracy, pokazując menu, gdy podłączonych jest wiele urządzeń:
Aby uniknąć pisania, możesz po prostu utworzyć alias obejmujący wybór urządzenia, jak wyjaśniono tutaj .
źródło
Użytkownik
@janot
wspomniał już o tym powyżej, ale filtrowanie najlepszego rozwiązania zajęło mi trochę czasu.Istnieją dwa przypadki szerokiego zastosowania:
1) Podłączony jest 2 sprzęt, pierwszy to emulator, a drugi to urządzenie.
Rozwiązanie :
adb -e shell....whatever-command
dla emulatora iadb -d shell....whatever-command
urządzenia.2) n liczba urządzeń jest podłączonych (wszystkie emulatory lub telefony / tablety) przez USB / ADB-WiFi:
Rozwiązanie : Krok 1) uruchom
adb devices
TO da ci listę urządzeń aktualnie podłączonych (przez USB lub ADBoverWiFI)Krok 2) teraz uruchom
adb -s <device-id/IP-address> shell....whatever-command
bez względu na to, jak wiele posiadanych urządzeń.Przykład
wyczyszczenia danych aplikacji na urządzeniu podłączonym przez Wi-Fi ADB Wykonałbym:
adb -s 172.16.34.89:5555 shell pm clear com.package-id
aby wyczyścić dane aplikacji podłączone do mojego urządzenia podłączonego do USB, wykonałbym:
adb -s 5210d21be2a5643d shell pm clear com.package-id
źródło
Aby zainstalować apk na jednym z emulatorów:
Najpierw uzyskaj listę urządzeń:
Następnie zainstaluj apk na emulatorze z
-s
flagą:Mam nadzieję, że to komuś pomoże!
źródło
Uruchamianie poleceń adb na wszystkich podłączonych urządzeniach
Utwórz bash (adb +)
skończyłem używać go z
polecenie adb + // +
źródło
W przypadku systemu Windows oto krótki przykład 1 linijki, w jaki sposób zainstalować plik na wielu urządzeniach
Jeśli planujesz dołączyć to do pliku wsadowego, zamień% x na %% x, jak poniżej
źródło
Utwórz Bash (tools.sh), aby wybrać serial z urządzeń (lub emulatora):
Następnie w innej opcji można użyć
adb -s
(opcja globalna - użyj urządzenia o podanym numerze seryjnym, który zastępuje $ ANDROID_SERIAL):Testowałem ten kod na terminalu MacOS, ale myślę, że można go używać w systemie Windows w terminalu Git Bash.
Pamiętaj również, aby skonfigurować zmienne środowiskowe i ścieżki zestawu SDK systemu Android w
.bash_profile
pliku:źródło
fxMenu
ifxValidatonNumberMenu
są tylko w celach informacyjnych. Skomentowałem to, aby uniknąć kodów błędów. Kompletną implementację można zobaczyć w moim repozytorium: github.com/equiman/hardhatmac/blob/master/tools.shNajlepszym sposobem na uruchomienie powłoki na dowolnym konkretnym urządzeniu jest użycie:
Działa w 100%
Proszę rzucić okiem
źródło
Oto skrypt powłoki, który stworzyłem dla siebie:
źródło