webentwicklung-frage-antwort-db.com.de

Android-Stoppemulator von der Befehlszeile aus

Diese Frage ist identisch mit So fahren Sie den Android-Emulator über die Befehlszeile herunter .

Nach dem Versuch der vorgeschlagenen Lösung aus der ersten Antwort war adb emu kill für mich jedoch nicht erfolgreich.

Ich automatisiere Gerätetests für eine Android-Anwendung. Mein bash-Skript läuft auf einer Maschine ohne Kopf. Es erstellt ein Android-Gerät mit Android create avd und führt emulator mit dem -no-window-Attribut aus. Dann kompiliert er das Testprojekt, stellt mit adb eine Verbindung zum Emulator her, installiert das Projekt und führt meine Tests aus. Das alles funktioniert gut.

Jetzt muss ich den Emulatorprozess beenden und genau wie der referenzierte Beitrag kann ich dies nur mit kill -9 tun. 

Das Google-Tutorial Verwalten von AVDs über die Befehlszeile erwähnt nur, wie Sie Emulatoren in einer GUI-Umgebung stoppen. 

Jede Hilfe wird geschätzt.

41
jsjrobotics

Vielleicht versuchen Sie es mit adb kill-server, sollte es für Sie funktionieren?

oder

adb -s emulator-5554 emu kill, wobei emulator-5554 der Name des Emulators ist.

Für Benutzer von Ubuntu habe ich einen guten Befehl gefunden, um alle laufenden Emulatoren zu stoppen (Danke an @uwe )

adb devices | grep emulator | cut -f1 | while read line; do adb -s $line emu kill; done
99

Um alle laufenden Emulatoren zu stoppen, verwenden wir diesen Befehl:

adb devices | grep emulator | cut -f1 | while read line; do adb -s $line emu kill; done
23
uwe

Die andere Antwort hat bei mir nicht funktioniert (unter Windows 7). Aber das hat funktioniert:

telnet localhost 5554
kill
7
Zenadix

Warum nicht einfach tun?

adb reboot bootloader
5
user3597306

Manchmal der Befehl

adb -s emulator-5554 emu kill

funktionierte auf unbekannten Gründen nicht auf meinen CI-Servern oder -Desktops. Ich glaube, unter Windows ist es in Ordnung, den Prozess von Qemu zu beenden, genau wie

Taskkill /IM qemu-system-x86_64.exe /F /T
2
Huiyang Shan

Keine der Lösungen funktionierte für mich. Ich musste den Telnet-Weg gehen, einschließlich Authentifizierung:

AUTH=$(cat "$HOME/.emulator_console_auth_token")

expect << EOF
spawn telnet localhost 5554
expect "OK"
send   "auth $AUTH\r"
expect "OK"
send   "kill\r"
expect "OK"
send   "exit\r"
EOF

Das vollständige Skript kann mit einer kostenlosen Lizenz von https://github.com/kullo/Android-emulator-tools bezogen werden.


Update: Anscheinend werden die Konsole und die ADB-Ports immer noch nicht zuverlässig geschlossen (z. B. 5554,5555).

1
Simon Warta

Ich benutze diesen Einzeiler, der zur besseren Lesbarkeit in mehrere Zeilen aufgeteilt ist:

adb devices |
 Perl -nle 'print $1 if /emulator-(\d+).device$/' |
 xargs -t -l1 -i bash -c "
   ( echo auth $(cat $HOME/.emulator_console_auth_token) ;
     echo kill ;
     yes ) |
   telnet localhost {}"
1
android.weasel

adb kill-server beendet alle Emulatoren und startet den Server neu.

1

Um dies zu automatisieren, können Sie jedes Skript oder jede App verwenden, die einen String an einen Socket senden kann. Ich persönlich mag nc (netcat) unter cygwin. Wie ich schon sagte, benutze ich es so:

$ echo kill | nc -w 2 localhost 5554

(Das bedeutet, "kill" -String an den Port 5554 auf localhost zu senden und netcat nach 2 Sekunden zu beenden.)

0
naveed148

Liste der angeschlossenen Geräte Emulator-5584 Host Emulator-5580 Host Emulator-5576 Host Emulator-5572 Host Emulator-5568 Host Emulator-5564 Host Emulator -5560 Host

C:\Users\Administrator> adb -s emulator-5584 emu kill Fehler: Verbindung mit TCP - Port 5584 konnte nicht hergestellt werden: Verbindung mit 127.0.0.1:5584 nicht möglich: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer lehnte es aktiv ab. (10061)

HINWEIS: Die GUI des Emulators läuft nicht, wird aber immer noch angezeigt

LÖSUNG:

adb kill-server

starten Sie den Emulator mit:

emulator.exe -netdelay none -netspeed full -avd Nexus_5X_API_19

Ich hoffe, dies wird dir helfen!

0
Gopal Choudhary

Ich kann es schließen mit:

adb Shell reboot -p
0
Hugo y