Emulator-Konsolenbefehle senden

Für jedes ausgeführte virtuelle Gerät ist eine Konsole verfügbar, mit der Sie die emulierte Geräteumgebung abfragen und steuern können. Sie können die Konsole beispielsweise verwenden, um die Portweiterleitung, die Netzwerkeigenschaften und die Telefonieereignisse zu verwalten, während Ihre App auf dem Emulator ausgeführt wird.

Für die folgenden Befehle muss bereits ein Emulator ausgeführt werden. Weitere Informationen zum Ausführen eines Emulators finden Sie unter Apps im Android-Emulator ausführen und Emulator über die Befehlszeile starten.

Konsolensitzung starten und beenden

Verwenden Sie telnet, um über ein Terminalfenster auf die Konsole zuzugreifen und Befehle einzugeben. Stellen Sie dazu eine Verbindung zum Konsolenport her und geben Sie Ihr Authentifizierungstoken an. Jedes Mal, wenn in der Konsole OK angezeigt wird, ist sie bereit, Befehle entgegenzunehmen. Es gibt keinen typischen Prompt.

So stellen Sie eine Verbindung zur Konsole eines ausgeführten virtuellen Geräts her:

  1. Öffnen Sie ein Terminalfenster und geben Sie den folgenden Befehl ein:
  2. telnet localhost console-port

    Im Titel des Emulatorfensters wird die Konsolenportnummer angezeigt, wenn der Emulator in einem separaten Fenster ausgeführt wird, nicht jedoch, wenn er in einem Toolfenster ausgeführt wird. Der Fenstertitel für einen Emulator, der den Konsolenport 5554 verwendet, könnte beispielsweise Pixel8_API_34:5554 lauten. Außerdem gibt der Befehl adb devices eine Liste der aktiven virtuellen Geräte und ihrer Konsolenportnummern aus. Weitere Informationen finden Sie unter Geräte abfragen.

    Hinweis:Der Emulator überwacht Verbindungen an den Ports 5554 bis 5585 und akzeptiert nur Verbindungen von localhost.

  3. Wenn in der Konsole OK angezeigt wird, geben Sie den Befehl auth auth_token ein.
  4. Bevor Sie Konsolenbefehle eingeben können, ist eine Authentifizierung in der Emulator-Konsole erforderlich. auth_token muss mit dem Inhalt der Datei .emulator_console_auth_token in Ihrem Basisverzeichnis übereinstimmen.

    Wenn die Datei nicht vorhanden ist, wird sie mit dem Befehl telnet localhost console-port erstellt. Sie enthält ein zufällig generiertes Authentifizierungstoken. Wenn Sie die Authentifizierung deaktivieren möchten, löschen Sie das Token aus der Datei .emulator_console_auth_token oder erstellen Sie eine leere Datei, falls sie nicht vorhanden ist.

  5. Nachdem Sie eine Verbindung zur Konsole hergestellt haben, geben Sie Konsolenbefehle ein.
  6. Geben Sie help, help command oder help-verbose ein, um eine Liste der Konsolenbefehle aufzurufen und mehr über bestimmte Befehle zu erfahren.

  7. Geben Sie quit oder exit ein, um die Konsolensitzung zu beenden.

Beispielsitzung:

$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
    help|h|?         Prints a list of commands
    help-verbose     Prints a list of commands with descriptions
    ping             Checks if the emulator is alive
    automation       Manages emulator automation
    event            Simulates hardware events
    geo              Geo-location commands
    gsm              GSM related commands
    cdma             CDMA related commands
    crash            Crashes the emulator instance
    crash-on-exit    Simulates crash on exit for the emulator instance
    kill             Terminates the emulator instance
    restart          Restarts the emulator instance
    network          Manages network settings  (ethernet and cellular only)
    power            Power related commands
    quit|exit        Quits control session
    redir            Manages port redirections
    sms              SMS related commands
    avd              Controls virtual device execution
    qemu             QEMU-specific commands
    sensor           Manages emulator sensors
    physics          Manages physical model
    finger           Manages emulator finger print
    debug            Controls the emulator debug output tags
    rotate           Rotates the screen clockwise by 90 degrees
    screenrecord     Records the emulator's display
    fold             Folds the device
    unfold           Unfolds the device
    multidisplay     Configures the multi-display
    nodraw           turn on/off NoDraw mode. (experimental)
    resize-display   resize the display resolution to the preset size
    virtualscene-image  customize virtualscene image for virtulscene camera
    proxy            manage network proxy server settings
    phonenumber      set phone number for the device


try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.

Emulator-Befehlsreferenz

In der folgenden Tabelle werden die Emulator-Konsolenbefehle mit ihren Parametern und Werten beschrieben:

Tabelle 1 Emulator-Konsolenbefehle

Allgemeine Befehle Beschreibung
avd {stop|start|status|name} Fragt das virtuelle Gerät ab, steuert es und verwaltet es so:
  • stop: Beendet die Ausführung des Geräts.
  • start: Startet die Ausführung des Geräts.
  • status: Fragt den Status des virtuellen Geräts ab. Dieser kann running oder stopped sein.
  • name: Fragt den Namen des virtuellen Geräts ab.
avd snapshot {list|save name|load name|delete name} Der Gerätestatus wird in Snapshots gespeichert und wiederhergestellt. Das funktioniert so:
  • list: Listet alle gespeicherten Snapshots auf.
  • save name: Speichert den Snapshot als name.
  • load name: Lädt den benannten Snapshot.
  • delete name: Löscht den benannten Snapshot.

Im folgenden Beispiel wird ein Snapshot mit dem Namen firstactivitysnapshot gespeichert:

avd snapshot save firstactivitysnapshot
fold Klappt das Gerät zusammen, um die kleinere Bildschirmkonfiguration anzuzeigen, wenn das Gerät faltbar und derzeit aufgeklappt ist.
unfold Entfaltet das Gerät, um die Konfiguration mit dem größeren Display anzuzeigen, wenn das Gerät faltbar und derzeit zusammengeklappt ist.
kill Beendet das virtuelle Gerät.
ping Prüft, ob das virtuelle Gerät ausgeführt wird.
rotate Dreht das AVD um 45 Grad gegen den Uhrzeigersinn.
Emulator zum Absturz bringen Beschreibung
crash Der Emulator stürzt während der Ausführung der App ab.
crash-on-exit Der Emulator stürzt ab, wenn die App beendet wird.
Tags debuggen Beschreibung
debug tags ...

Aktiviert oder deaktiviert Debugging-Meldungen aus bestimmten Teilen des Emulators. Der Parameter tags muss ein Wert aus der Liste der Debug-Tags sein, die angezeigt wird, wenn Sie emulator -help-debug-tags ausführen. Weitere Informationen zur Option -help-debug-tags finden Sie in der Tabelle mit häufig verwendeten Optionen.

Im folgenden Beispiel wird das Tag radio aktiviert:

debug radio
Portumleitung Beschreibung
redir list Listet die aktuelle Portweiterleitung auf.
redir add protocol:host-port:guest-port Fügt eine neue Portweiterleitung hinzu, wie folgt:
  • protocol: Muss entweder tcp oder udp sein.
  • host-port: Die Portnummer, die auf dem Host geöffnet werden soll.
  • guest-port: Die Portnummer, an die Daten auf dem Emulator weitergeleitet werden sollen.
redir del protocol:host-port Löscht eine Portweiterleitung.
  • protocol: Muss entweder tcp oder udp sein.
  • host-port: Die Portnummer, die auf dem Host geöffnet werden soll.
Geografischer Standort Beschreibung

Legt den geografischen Standort fest, der den Apps, die in einem Emulator ausgeführt werden, gemeldet wird, indem ein GPS-Fix an den Emulator gesendet wird.

Sie können einen der folgenden geo-Befehle ausgeben, sobald ein virtuelles Gerät ausgeführt wird. Der Emulator legt den von Ihnen eingegebenen Standort fest, indem er einen Mock-Standortanbieter erstellt. Dieser Anbieter reagiert auf Standort-Listener, die von Apps festgelegt werden, und stellt den Standort für LocationManager bereit. Jede App kann den Standortmanager abfragen, um den aktuellen GPS-Fix für das emulierte Gerät abzurufen, indem sie LocationManager.getLastKnownLocation("gps") aufruft.

geo fix longitude latitude [altitude] [satellites] [velocity] Sendet einen einfachen GPS-Fix an den Emulator. Geben Sie longitude und latitude in Dezimalgrad an. Geben Sie mit einer Zahl von 1 bis 12 die Anzahl der satellites an, die zur Bestimmung der Position verwendet werden sollen, und geben Sie altitude in Metern und velocity in Knoten an.
geo nmea sentence Sendet einen NMEA 0183-Satz an das emulierte Gerät, als wäre er von einem emulierten GPS-Modem gesendet worden. Beginnen Sie sentence mit „$GP“. Derzeit werden nur die Satztypen „$GPGGA“ und „$GPRCM“ unterstützt. Das folgende Beispiel ist ein GPGGA-Satz (Global Positioning System Fix Data), mit dem die Zeit-, Positions- und Fix-Daten für einen GPS-Empfänger abgerufen werden:
geo nmea $GPGGA ,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
Gefälschte Hardwareereignisse Beschreibung
event types Listet alle Arten von gefälschten Ereignissen auf. Bei Ereignissen mit Codes wird die Anzahl der Codes rechts in Klammern angegeben.

event types
event <type> can be an integer or one of the following aliases:
    EV_SYN
    EV_KEY    (405 code aliases)
    EV_REL    (2 code aliases)
    EV_ABS    (27 code aliases)
    EV_MSC
    EV_SW     (4 code aliases)
    EV_LED
    EV_SND
    EV_REP
    EV_FF
    EV_PWR
    EV_FF_STATUS
    EV_MAX
OK
        

event send types [types ...] Sendet einen oder mehrere gefälschte Ereignistypen.
event codes type Listet die Ereigniscodes für den angegebenen gefälschten Ereignistyp auf.
event send type[:code]:[value] [...] Sendet ein oder mehrere gefälschte Ereignisse mit optionalen Codes und Code-Werten.

Mit dem Befehl adb können Sie herausfinden, welches Ereignis gesendet werden muss, wenn Sie die Tasten auf dem Emulator manuell drücken.

Das sind die Ereignisse, die beim Drücken der Ein/Aus-Taste generiert werden:

adb shell getevent -lt

/dev/input/event12: EV_KEY       KEY_POWER            DOWN
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
/dev/input/event12: EV_KEY       KEY_POWER            UP
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
      
Wenn Sie beispielsweise ein langes Drücken der Ein/Aus-Taste simulieren möchten, senden Sie zwei EV_KEY-Ereignisse für „keydown“ und „keyup“:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Sendet eine Zeichenfolge, die Tastendrücke simuliert. Die Nachricht muss ein UTF-8-String sein. Unicode-Beiträge werden entsprechend der aktuellen Geräte-Tastatur rückwärts zugeordnet und nicht unterstützte Zeichen werden stillschweigend verworfen.
Steuerelemente für den Energiezustand Beschreibung
power display Zeigt den Status des Akkus und des Ladegeräts an.
power ac {on|off} Legt den AC-Ladestatus auf on oder off fest.
power status {unknown|charging|discharging|not-charging|full} Ändert den Akkustand wie angegeben.
power present {true|false} Legt den Status des Akkus fest.
power health {unknown|good|overheat|dead|overvoltage|failure} Legt den Akkuzustand fest.
power capacity percent Legt den Status der verbleibenden Akkukapazität als Prozentwert zwischen 0 und 100 fest.
Status der Netzwerkverbindung
(nur Ethernet und Mobilfunk)
Beschreibung
network status Prüft den Netzwerkstatus sowie die aktuellen Verzögerungs- und Geschwindigkeitsmerkmale.
network delay latency

Ändert die emulierte Netzwerklatenz.

Mit dem Emulator können Sie verschiedene Netzwerk-Latenzzeiten simulieren, um Ihre App in einer Umgebung zu testen, die den tatsächlichen Laufbedingungen ähnelt. Sie können beim Start des Emulators eine Latenzstufe oder einen Latenzbereich festlegen oder die Latenz über die Konsole ändern, während die App im Emulator ausgeführt wird.

Das Format des Netzwerks latency ist eines der folgenden (Zahlen in Millisekunden):

Format für Netzwerklatenz:

  • gprs: GPRS mit einer Latenz zwischen 150 ms und 550 ms.
  • edge: EDGE/EGPRS mit einer Latenz von mindestens 80 und höchstens 400.
  • umts: UMTS/3G mit einer Latenz zwischen 35 und 200.
  • none: Keine Latenz.
  • num: Emuliert die angegebene Latenz in Millisekunden.
  • min:max: Emuliert den angegebenen Latenzbereich.

Wenn Sie die Latenz beim Start des Emulators festlegen möchten, verwenden Sie die -netdelay Emulatoroption mit einem unterstützten latency-Wert, wie in der vorherigen Liste Format für Netzwerklatenz beschrieben. Hier einige Beispiele:

emulator -netdelay gprs
emulator -netdelay 40,100

Wenn Sie die Netzwerkverzögerung ändern möchten, während der Emulator ausgeführt wird, stellen Sie eine Verbindung zur Konsole her und verwenden Sie den Befehl netdelay mit einem unterstützten latency-Wert aus der vorherigen Liste Format für Netzwerk-Latenz.

network delay gprs
network delay 40 100
network speed speed Mit dem Emulator können Sie verschiedene Netzwerkübertragungsraten simulieren.

Sie können beim Start des Emulators eine Übertragungsrate oder einen Übertragungsratenbereich festlegen oder die Rate über die Konsole ändern, während die App im Emulator ausgeführt wird.

Das Format des Netzwerks speed ist eines der folgenden (Zahlen in Kilobit/Sekunde):

Format für Netzwerkgeschwindigkeit:

  • gsm: GSM/CSD mit einer Geschwindigkeit von 14, 4 kbit/s im Up- und Download.
  • hscsd: HSCSD mit einer Geschwindigkeit von 14,4 Mbit/s im Upstream und 43,2 Mbit/s im Downstream.
  • gprs: GPRS mit einer Geschwindigkeit von 40,0 kbit/s im Upload und 80,0 kbit/s im Download.
  • edge: EDGE/EGPRS mit einer Geschwindigkeit von 118,4 kbit/s im Upload und 236,8 kbit/s im Download.
  • umts: UMTS/3G mit einer Geschwindigkeit von 128, 0 kbit/s im Upload und 1.920 kbit/s im Download.
  • hsdpa: HSDPA mit einer Geschwindigkeit von 348, 0 kbit/s im Upstream und 14.400,0 kbit/s im Downstream.
  • lte: LTE mit einer Geschwindigkeit von 58.000 kbit/s im Upload und 173.000 kbit/s im Download.
  • evdo: EVDO mit einer Geschwindigkeit von 75.000 Upstream und 280.000 Downstream.
  • full: Unbegrenzte Geschwindigkeit, hängt jedoch von der Verbindungsgeschwindigkeit Ihres Computers ab.
  • num: Legt eine genaue Rate in Kilobit/s für Upload und Download fest.
  • up:down: Legt genaue Raten in Kilobit/s für Upload und Download separat fest.

Wenn Sie die Netzwerkgeschwindigkeit beim Start des Emulators festlegen möchten, verwenden Sie die -netspeed Emulatoroption mit einem unterstützten speed-Wert, wie in der vorherigen Liste Format für Netzwerkgeschwindigkeit. Hier einige Beispiele:

emulator -netspeed gsm @Pixel_API_26
emulator -netspeed 14.4,80 @Pixel_API_26

Wenn Sie die Netzwerkgeschwindigkeit ändern möchten, während der Emulator ausgeführt wird, stellen Sie eine Verbindung zur Konsole her und verwenden Sie den Befehl network speed mit einem unterstützten speed-Wert aus der vorherigen Liste Format für Netzwerkgeschwindigkeit.

network speed 14.4 80
network capture {start|stop} file Sendet Pakete an eine Datei. In der folgenden Liste werden die Parameter und Parameterwerte beschrieben:
  • start file: Beginnt mit dem Senden von Paketen an die angegebene Datei.
  • stop file: Beendet das Senden von Paketen an die angegebene Datei.
Telefonie-Emulation Beschreibung
Der Android-Emulator enthält eigene emulierte GSM- und CDMA-Modems, mit denen Sie Telefoniefunktionen im Emulator simulieren können. Mit GSM können Sie beispielsweise eingehende Anrufe simulieren und Datenverbindungen herstellen und beenden. Bei CDMA geben Sie eine Aboquelle und die bevorzugte Roaming-Liste an. Das Android-System behandelt simulierte Anrufe genau wie tatsächliche Anrufe. Der Emulator unterstützt kein Anrufaudio.
gsm {call|accept|cancel|busy} phonenumber Die gsm-Parameter sind die folgenden:
  • call: Simuliert einen eingehenden Anruf von phonenumber.
  • accept: Nimmt einen eingehenden Anruf von phonenumber entgegen und ändert den Anrufstatus zu active. Sie können den Anrufstatus nur dann in active ändern, wenn der aktuelle Status waiting oder held ist.
  • cancel: Beendet einen eingehenden Anruf von oder einen ausgehenden Anruf an phonenumber.
  • busy: Schließt einen ausgehenden Anruf an phonenumber und ändert den Anrufstatus zu busy. Sie können den Anrufstatus nur dann in busy ändern, wenn der aktuelle Status waiting ist.
gsm {data|voice} state Mit dem Befehl data state wird der Status der GPRS-Datenverbindung geändert und mit dem Befehl data voice state der Status der GPRS-Sprachverbindung. Die Änderungen sind wie folgt:
  • unregistered: Kein Netzwerk verfügbar.
  • home: Im lokalen Netzwerk, kein Roaming.
  • roaming: Im Roamingnetzwerk.
  • searching: Netzwerke werden gesucht.
  • denied: Nur Notrufe.
  • off: wie unregistered.
  • on: wie home.
gsm hold Ändert den Status eines Anrufs in hold. Sie können den Anrufstatus nur dann in hold ändern, wenn der aktuelle Status active oder waiting ist.
gsm list Listet alle eingehenden und ausgehenden Anrufe und deren Status auf.
gsm status Gibt den aktuellen GSM-Sprach-/Datenstatus an. Die Werte sind die, die für die Befehle voice und data beschrieben werden.
gsm signal {rssi|ber} Ändert die gemeldete Signalstärke (rssi) und Bitfehlerrate (ber) in den nächsten 15 Sekunden des Updates. In der folgenden Liste werden die Parameter und ihre Werte beschrieben:
  • Der Bereich für rssi liegt zwischen 0 und 31 sowie 99 für „unbekannt“.
  • Der Bereich für ber liegt zwischen 0 und 7 sowie 99 für „unbekannt“.
gsm signal-profile num Legt das Profil für die Signalstärke fest. num ist eine Zahl zwischen 0 und 4.
cdma ssource source Legt die aktuelle CDMA-Aboquelle fest, wobei source eine netzwerkbasierte Zulassungsliste ist, die die Abonnenten des CDMA-Mobilfunkanbieters und ihre Werte enthält, wie folgt:
  • nv: Liest das Abo aus dem nichtflüchtigen RAM.
  • ruim: Liest das Abo vom RUIM (Removable User Identity Module).
cdma prl_version version Gibt die aktuelle Version der Preferred Roaming List (PRL) aus. Die Versionsnummer bezieht sich auf die PRL-Datenbank, die Informationen enthält, die während der Systemauswahl und des Akquisitionsprozesses verwendet werden.
Sensoren im Emulator verwalten Beschreibung
Diese Befehle beziehen sich darauf, welche Sensoren im AVD verfügbar sind. Neben dem Befehl sensor können Sie die Einstellungen im Emulator auch auf dem Bildschirm Virtuelle Sensoren auf den Tabs Beschleunigungsmesser und Zusätzliche Sensoren aufrufen und anpassen.
sensor status Listet alle Sensoren und ihren Status auf. Im Folgenden finden Sie ein Beispiel für die Ausgabe des Befehls sensor status:
sensor get sensor-name Ruft die Einstellungen für sensor-name ab. Im folgenden Beispiel wird der Wert für den Beschleunigungssensor abgerufen:
sensor get acceleration
acceleration = 2.23517e-07:9.77631:0.812348

Die durch Doppelpunkte(:) getrennten acceleration-Werte beziehen sich auf die x-, y- und z-Koordinaten für die virtuellen Sensoren.

sensor set sensor-name value-x:value-y:value-z Legt die Werte für sensor-name fest. Im folgenden Beispiel wird der Beschleunigungssensor auf die durch Doppelpunkte getrennten x-, y- und z-Werte festgelegt.
sensor set acceleration 2.23517e-07:9.77631:0.812348
SMS-Emulation Beschreibung
sms send sender-phone-number textmessage Generiert eine emulierte eingehende SMS. In der folgenden Liste werden die Parameter und ihre Werte beschrieben:
  • sender-phone-number: Enthält einen beliebigen numerischen String.
  • textmessage: Die SMS-Nachricht.

Im folgenden Beispiel wird die Nachricht „Hallo“ an die Telefonnummer 4085555555 gesendet:

sms send 4085555555 hi there

Die Konsole leitet die SMS an das Android-Framework weiter, das sie an eine App auf dem Emulator übergibt, die SMS verarbeitet, z. B. die Messages App. Wenn Sie 10 Zahlen übergeben, wird sie von der App als Telefonnummer formatiert. Längere oder kürzere numerische Strings werden so angezeigt, wie Sie sie gesendet haben.

Fingerabdrucksimulation Beschreibung
finger touch fingerprint-id Simuliert, dass ein Finger den Sensor berührt.
finger remove Simuliert das Entfernen des Fingers.

Eine Anleitung zur Verwendung dieser Befehle finden Sie im folgenden Abschnitt zur Simulation und Validierung von Fingerabdrücken.

Fingerabdrucksimulation und ‑validierung

Abbildung 1: Bildschirm für die Fingerabdruckauthentifizierung

Mit dem Befehl finger können Sie die Fingerabdruckauthentifizierung für Ihre App simulieren und validieren. Sie benötigen SDK Tools 24.3 oder höher und Android 6.0 (API-Level 23) oder höher.

So simulieren und validieren Sie die Fingerabdruckauthentifizierung:

  1. Wenn Sie noch keine Fingerabdruck-ID haben, registrieren Sie einen neuen Fingerabdruck im Emulator. Wählen Sie dazu Einstellungen > Sicherheit > Fingerabdruck aus und folgen Sie der Anleitung.
  2. Richten Sie Ihre App so ein, dass sie die Fingerabdruckauthentifizierung akzeptiert. Nachdem Sie diese Einrichtung abgeschlossen haben, wird auf Ihrem Gerät der Bildschirm für die Fingerabdruckauthentifizierung angezeigt.
  3. Während in Ihrer App der Bildschirm für die Fingerabdruckauthentifizierung angezeigt wird, rufen Sie die Console auf, geben Sie den Befehl finger touch und die von Ihnen erstellte Fingerabdruck-ID ein. Dadurch wird eine Berührung mit dem Finger simuliert.
  4. Geben Sie dann den Befehl finger remove ein, um das Entfernen des Fingers zu simulieren.

    Ihre App sollte so reagieren, als hätte ein Nutzer den Fingerabdrucksensor berührt und dann den Finger wieder entfernt.