Wysyłaj polecenia konsoli emulatora

Każde uruchomione urządzenie wirtualne udostępnia konsolę, która umożliwia wysyłanie zapytań do emulowanego środowiska urządzenia i sterowanie nim. Za pomocą konsoli możesz na przykład zarządzać przekierowaniem portów, charakterystyką sieci i zdarzeniami telefonicznymi, gdy aplikacja jest uruchomiona na emulatorze.

Poniższe polecenia wymagają, aby emulator był już uruchomiony. Więcej informacji o uruchamianiu emulatora znajdziesz w artykułach Uruchamianie aplikacji w Emulatorze AndroidaUruchamianie emulatora z wiersza poleceń.

Rozpoczynanie i zatrzymywanie sesji konsoli

Aby uzyskać dostęp do konsoli i wpisywać polecenia w oknie terminala, użyj złącza telnet, aby połączyć się z portem konsoli, i podaj token uwierzytelniania. Za każdym razem, gdy konsola wyświetli OK, będzie gotowa do przyjęcia poleceń. Nie ma typowego prompta.

Aby połączyć się z konsolą działającego urządzenia wirtualnego:

  1. Otwórz okno terminala i wpisz to polecenie:
  2. telnet localhost console-port

    Tytuł okna emulatora zawiera numer portu konsoli, gdy jest ona uruchomiona w osobnym oknie, ale nie zawiera go, gdy jest uruchomiona w oknie narzędzi. Na przykład tytuł okna emulatora korzystającego z portu konsoli 5554 może wyglądać tak: Pixel8_API_34:5554. Polecenie adb devices wyświetla listę uruchomionych urządzeń wirtualnych i numery portów konsoli. Więcej informacji znajdziesz w sekcji Wysyłanie zapytań o urządzenia.

    Uwaga: emulator nasłuchuje połączeń na portach 5554–5585 i akceptuje połączenia tylko z localhost.

  3. Gdy w konsoli pojawi się znak OK, wpisz polecenie auth auth_token.
  4. Zanim będzie można wpisać polecenia konsoli, konsola emulatora wymaga uwierzytelnienia. auth_token musi być zgodny z zawartością pliku .emulator_console_auth_token w katalogu głównym.

    Jeśli ten plik nie istnieje, polecenie telnet localhost console-port utworzy plik zawierający losowo wygenerowany token uwierzytelniania. Aby wyłączyć uwierzytelnianie, usuń token z pliku .emulator_console_auth_token lub utwórz pusty plik, jeśli nie istnieje.

  5. Po połączeniu z konsolą wpisz polecenia konsoli.
  6. Wpisz help, help command lub help-verbose, aby wyświetlić listę poleceń konsoli i dowiedzieć się więcej o poszczególnych poleceniach.

  7. Aby zakończyć sesję konsoli, wpisz quit lub exit.

Oto przykładowa sesja:

$ 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.

Dokumentacja poleceń emulatora

W tabeli poniżej znajdziesz opis poleceń konsoli emulatora wraz z ich parametrami i wartościami:

Tabela 1. Polecenia konsoli emulatora

Polecenia ogólne Opis
avd {stop|start|status|name} Wysyła zapytania do urządzenia wirtualnego, steruje nim i zarządza nim w ten sposób:
  • stop: zatrzymuje wykonywanie urządzenia.
  • start: rozpoczyna wykonywanie na urządzeniu.
  • status: sprawdza stan urządzenia wirtualnego, który może być running lub stopped.
  • name: wysyła zapytanie o nazwę urządzenia wirtualnego.
avd snapshot {list|save name|load name|delete name} Zapisuje i przywraca stan urządzenia w zrzutach w ten sposób:
  • list: Wyświetla listę wszystkich zapisanych zrzutów.
  • save name: zapisuje zrzut jako name.
  • load name: wczytuje zrzut o podanej nazwie.
  • delete name: Usuwa zrzut o podanej nazwie.

W tym przykładzie zapisujemy podsumowanie danych o nazwie firstactivitysnapshot:

avd snapshot save firstactivitysnapshot
fold Składa urządzenie, aby wyświetlić konfigurację mniejszego ekranu, jeśli urządzenie jest składane i obecnie rozłożone.
unfold Rozkłada urządzenie, aby wyświetlić jego większą konfigurację ekranu, jeśli urządzenie jest składane i jest obecnie złożone.
kill Kończy działanie urządzenia wirtualnego.
ping Sprawdza, czy urządzenie wirtualne jest uruchomione.
rotate Obraca AVD w lewo o 45 stopni.
Awaria emulatora Opis
crash Powoduje awarię emulatora podczas wykonywania aplikacji.
crash-on-exit Powoduje awarię emulatora po zamknięciu aplikacji.
Debugowanie tagów Opis
debug tags ...

Włącza i wyłącza komunikaty debugowania z określonych części emulatora. Parametr tags musi być wartością z listy tagów debugowania, która pojawia się po wykonaniu polecenia emulator -help-debug-tags. Więcej informacji o opcji -help-debug-tags znajdziesz w tabeli najczęściej używanych opcji.

Poniższy przykład włącza tag radio:

debug radio
Przekierowanie portów Opis
redir list Wyświetla bieżące przekierowanie portu.
redir add protocol:host-port:guest-port Dodaje nowe przekierowanie portu w ten sposób:
  • protocol: musi być wartością tcp lub udp.
  • host-port: numer portu, który ma być otwarty na hoście.
  • guest-port: numer portu, do którego mają być kierowane dane na emulatorze.
redir del protocol:host-port Usuwa przekierowanie portu.
  • protocol: musi być wartością tcp lub udp.
  • host-port: numer portu, który ma być otwarty na hoście.
Lokalizacja geograficzna Opis

Ustawia położenie geograficzne zgłaszane aplikacjom działającym w emulatorze, wysyłając do niego poprawkę GPS.

Gdy tylko urządzenie wirtualne zacznie działać, możesz wydać jedno z tych poleceń geo. Emulator ustawia wpisaną lokalizację, tworząc dostawcę pozorowania lokalizacji. Ten dostawca odpowiada na odbiorniki lokalizacji ustawione przez aplikacje i przekazuje lokalizację do LocationManager. Każda aplikacja może wysłać zapytanie do menedżera lokalizacji, aby uzyskać bieżącą lokalizację GPS emulowanego urządzenia, wywołując funkcję LocationManager.getLastKnownLocation("gps").

geo fix longitude latitude [altitude] [satellites] [velocity] Wysyła do emulatora prostą pozycję GPS. Wartości longitudelatitude należy podać w stopniach dziesiętnych. Użyj liczby od 1 do 12, aby określić liczbę satellites, które mają być użyte do określenia pozycji, i podaj altitude w metrach oraz velocity w węzłach.
geo nmea sentence Wysyła do emulowanego urządzenia zdanie NMEA 0183 tak, jakby zostało wysłane z emulowanego modemu GPS. Zacznij od sentence z „$GP”. Obecnie obsługiwane są tylko zdania „$GPGGA” i „$GPRCM”. Poniższy przykład to zdanie GPGGA (Global Positioning System Fix Data), które pobiera dane o czasie, pozycji i poprawkach dla odbiornika GPS:
geo nmea $GPGGA ,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
Fałszywe zdarzenia sprzętowe Opis
event types Zawiera listę wszystkich typów fałszywych zdarzeń. W przypadku wydarzeń, które mają kody, liczba kodów jest podana w nawiasach po prawej stronie.

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 ...] Wysyła co najmniej 1 rodzaj fałszywego zdarzenia.
event codes type Zawiera listę kodów zdarzeń dla określonego typu fałszywego zdarzenia.
event send type[:code]:[value] [...] Wysyła co najmniej 1 fałszywe zdarzenie z opcjonalnymi kodami i wartościami kodów.

Aby dowiedzieć się, które zdarzenie wysłać, możesz użyć polecenia adb, ręcznie naciskając przyciski na emulatorze.

Oto zdarzenia generowane po naciśnięciu przycisku zasilania:

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
      
Aby na przykład zasymulować długie naciśnięcie przycisku zasilania, wyślij 2 zdarzenia EV_KEY: keydown i keyup:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Wysyła ciąg znaków, które symulują naciśnięcia klawiszy. Wiadomość musi być ciągiem znaków UTF-8. Posty w Unicode są odwrotnie mapowane zgodnie z bieżącą klawiaturą urządzenia, a nieobsługiwane znaki są cicho odrzucane.
Ustawienia stanu zasilania Opis
power display Wyświetla stan baterii i ładowarki.
power ac {on|off} Ustawia stan ładowania prądem zmiennym na on lub off.
power status {unknown|charging|discharging|not-charging|full} Zmienia stan baterii zgodnie z określonymi ustawieniami.
power present {true|false} Ustawia stan obecności baterii.
power health {unknown|good|overheat|dead|overvoltage|failure} Ustawia stan baterii.
power capacity percent Ustawia pozostałą pojemność baterii jako wartość procentową od 0 do 100.
Stan połączenia sieciowego 
(tylko Ethernet i sieć komórkowa)
Opis
network status Sprawdza stan sieci oraz bieżące opóźnienie i szybkość.
network delay latency

Zmienia emulowane opóźnienie sieci.

Emulator umożliwia symulowanie różnych poziomów opóźnienia sieci, dzięki czemu możesz testować aplikację w środowisku bardziej typowym dla rzeczywistych warunków działania. Możesz ustawić poziom lub zakres opóźnienia podczas uruchamiania emulatora albo użyć konsoli, aby zmienić opóźnienie, gdy aplikacja jest uruchomiona w emulatorze.

Format sieci latency jest jednym z tych formatów (liczby podane są w milisekundach):

Format opóźnienia sieci:

  • gprs: GPRS, który ma zakres opóźnienia od 150 ms do 550 ms.
  • edge: EDGE/EGPRS, która wykorzystuje zakres opóźnień od 80 ms do 400 ms.
  • umts: UMTS/3G, która wykorzystuje zakres opóźnień od 35 ms do 200 ms.
  • none: brak opóźnienia.
  • num: emuluje określone opóźnienie w milisekundach.
  • min:max: emuluje określony zakres czasu oczekiwania.

Aby ustawić opóźnienie przy uruchamianiu emulatora, użyj -netdelay opcji emulatora z obsługiwaną wartością latency, jak podano na liście Format opóźnienia sieci. Oto przykłady:

emulator -netdelay gprs
emulator -netdelay 40,100

Aby wprowadzić zmiany w opóźnieniu sieci podczas działania emulatora, połącz się z konsolą i użyj polecenia netdelay z obsługiwaną wartością latency z poprzedniej listy Format opóźnienia sieci.

network delay gprs
network delay 40 100
network speed speed Emulator umożliwia symulowanie różnych szybkości przesyłania danych w sieci.

Szybkość lub zakres przesyłania możesz ustawić podczas uruchamiania emulatora lub zmienić ją w konsoli, gdy aplikacja jest uruchomiona w emulatorze.

Format sieci speed jest jednym z tych formatów (liczby podane w kilobitach na sekundę):

Format prędkości sieci:

  • gsm: GSM/CSD, która wykorzystuje prędkość 14,4 kb/s w górę i 14,4 kb/s w dół.
  • hscsd: HSCSD, która wykorzystuje prędkość 14,4 kb/s w przypadku wysyłania i 43,2 kb/s w przypadku pobierania.
  • gprs: GPRS, który wykorzystuje prędkość 40,0 kb/s przy wysyłaniu i 80,0 kb/s przy pobieraniu.
  • edge: EDGE/EGPRS, która wykorzystuje prędkość 118,4 kb/s w przypadku wysyłania i 236,8 kb/s w przypadku pobierania.
  • umts: UMTS/3G, która wykorzystuje prędkość 128,0 kb/s w górę i 1920 kb/s w dół.
  • hsdpa: HSDPA, która wykorzystuje prędkość 348,0 Mb/s w przypadku wysyłania i 14 400,0 Mb/s w przypadku pobierania.
  • lte: LTE, która wykorzystuje prędkość 58 000 kb/s w górę i 173 000 kb/s w dół.
  • evdo: EVDO, która wykorzystuje prędkość 75 000 bitów na sekundę w przypadku wysyłania i 280 000 bitów na sekundę w przypadku pobierania.
  • full: nieograniczona szybkość, ale zależy od szybkości połączenia komputera.
  • num: ustawia dokładną szybkość w kilobitach na sekundę używaną zarówno do przesyłania, jak i pobierania.
  • up:down: Ustawia dokładne szybkości w kilobitach na sekundę dla przesyłania i pobierania oddzielnie.

Aby ustawić szybkość sieci podczas uruchamiania emulatora, użyj -netspeed opcji emulatora z obsługiwaną wartością speed, jak w poprzedniej liście Format szybkości sieci. Oto przykłady:

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

Aby wprowadzić zmiany w szybkości sieci podczas działania emulatora, połącz się z konsolą i użyj polecenia network speed z obsługiwaną wartością speed z poprzedniej listy Format szybkości sieci.

network speed 14.4 80
network capture {start|stop} file Wysyła pakiety do pliku. Poniższa lista zawiera opis parametrów i ich wartości:
  • start file: rozpoczyna wysyłanie pakietów do określonego pliku.
  • stop file: zatrzymuje wysyłanie pakietów do określonego pliku.
Emulacja połączeń telefonicznych Opis
Emulator Androida zawiera własne emulowane modemy GSM i CDMA, które umożliwiają symulowanie funkcji telefonicznych w emulatorze. Na przykład w przypadku GSM możesz symulować połączenia przychodzące i nawiązywać oraz zakańczać połączenia transmisji danych. W przypadku CDMA podajesz źródło subskrypcji i preferowaną listę roamingową. System Android obsługuje symulowane połączenia dokładnie tak samo jak rzeczywiste. Emulator nie obsługuje dźwięku połączeń.
gsm {call|accept|cancel|busy} phonenumber Parametry gsm to:
  • call: Symuluje połączenie przychodzące z numeru phonenumber.
  • accept: odbiera połączenie przychodzące od użytkownika phonenumber i zmienia stan połączenia na active. Stan połączenia możesz zmienić na active tylko wtedy, gdy jego bieżący stan to waiting lub held.
  • cancel: kończy połączenie przychodzące od phonenumber lub wychodzące do phonenumber.
  • busy: Kończy połączenie wychodzące do phonenumber i zmienia stan połączenia na busy. Stan połączenia możesz zmienić na busy tylko wtedy, gdy jego bieżący stan to waiting.
gsm {data|voice} state Polecenie data state zmienia stan połączenia transmisji danych GPRS, a polecenie data voice state zmienia stan połączenia głosowego GPRS w ten sposób:
  • unregistered: Brak dostępnej sieci.
  • home: w sieci lokalnej, bez roamingu.
  • roaming: w sieci roamingowej.
  • searching: Wyszukiwanie sieci.
  • denied: Tylko połączenia alarmowe.
  • off: to samo co unregistered.
  • on: to samo co home.
gsm hold Zmienia stan połączenia na hold. Stan połączenia możesz zmienić na hold tylko wtedy, gdy jego bieżący stan to active lub waiting.
gsm list Wyświetla listę wszystkich połączeń przychodzących i wychodzących oraz ich stanów.
gsm status Zwraca bieżący stan połączeń głosowych i transmisji danych w sieci GSM. Wartości są takie same jak w przypadku poleceń voicedata.
gsm signal {rssi|ber} Zmienia zgłoszoną siłę sygnału (rssi) i wskaźnik błędów bitowych (ber) w ciągu następnych 15 sekund aktualizacji. Poniższa lista zawiera opis parametrów i ich wartości:
  • Zakres wartości rssi to 0–31, a 99 oznacza wartość nieznaną.
  • Zakres ber to od 0 do 7, a w przypadku nieznanej wartości – 99.
gsm signal-profile num Ustawia profil siły sygnału. num to liczba od 0 do 4.
cdma ssource source Ustawia bieżące źródło subskrypcji CDMA, gdzie source to lista dozwolonych oparta na sieci, która zawiera subskrybentów operatora CDMA i ich wartości, w ten sposób:
  • nv: odczytuje subskrypcję z pamięci RAM typu non-volatile.
  • ruim: odczytuje subskrypcję z karty RUIM (Removable User Identity Module).
cdma prl_version version Zrzuca bieżącą wersję preferowanej listy roamingowej (PRL). Numer wersji dotyczy bazy danych PRL, która zawiera informacje używane podczas procesu wyboru i pozyskiwania systemu.
Zarządzanie czujnikami na emulatorze Opis
Te polecenia dotyczą tego, które czujniki są dostępne na AVD. Oprócz używania polecenia sensor możesz wyświetlać i dostosowywać ustawienia w emulatorze na ekranie Wirtualne czujniki na kartach AkcelerometrDodatkowe czujniki.
sensor status Zawiera listę wszystkich czujników i ich stanów. Poniżej przedstawiono przykładowe dane wyjściowe polecenia sensor status:
sensor get sensor-name Pobiera ustawienia dla sensor-name. W tym przykładzie pobierana jest wartość z czujnika przyspieszenia:
sensor get acceleration
acceleration = 2.23517e-07:9.77631:0.812348

Wartości acceleration rozdzielone dwukropkami(:) odnoszą się do współrzędnych x, y i z wirtualnych czujników.

sensor set sensor-name value-x:value-y:value-z Ustawia wartości dla parametru sensor-name. W tym przykładzie ustawiamy czujnik przyspieszenia na wartości x, y i z rozdzielone dwukropkami.
sensor set acceleration 2.23517e-07:9.77631:0.812348
Emulacja SMS-ów Opis
sms send sender-phone-number textmessage Generuje emulowany przychodzący SMS. Poniższa lista zawiera parametry i ich wartości:
  • sender-phone-number: zawiera dowolny ciąg znaków numerycznych.
  • textmessage: wiadomość SMS.

Ten przykład wysyła wiadomość „hi there” na numer telefonu 4085555555:

sms send 4085555555 hi there

Konsola przekazuje SMS-a do platformy Android, która przekazuje go do aplikacji na emulatorze obsługującej SMS-y, np. do aplikacji Wiadomości. Jeśli przekażesz 10 cyfr, aplikacja sformatuje je jako numer telefonu. Dłuższe lub krótsze ciągi cyfr są wyświetlane w taki sposób, w jaki zostały wysłane.

Symulacja odcisku palca Opis
finger touch fingerprint-id Symuluje dotknięcie czytnika palcem.
finger remove Symuluje usunięcie palca.

Instrukcje korzystania z tych poleceń znajdziesz w sekcji symulacja i weryfikacja odcisku palca.

Symulacja i weryfikacja odcisku palca

Rysunek 1. Ekran uwierzytelniania odciskiem palca.

Użyj polecenia finger, aby symulować i weryfikować uwierzytelnianie za pomocą odcisku palca w aplikacji. Wymagane są narzędzia SDK w wersji 24.3 lub nowszej oraz Android 6.0 (poziom interfejsu API 23) lub nowszy.

Aby zasymulować i sprawdzić uwierzytelnianie za pomocą odcisku palca:

  1. Jeśli nie masz jeszcze identyfikatora odcisku palca, zarejestruj nowy odcisk palca w emulatorze, wybierając Ustawienia > Zabezpieczenia > Odcisk palca i postępując zgodnie z instrukcjami rejestracji.
  2. Skonfiguruj aplikację, aby akceptowała uwierzytelnianie odciskiem palca. Po zakończeniu konfiguracji na urządzeniu pojawi się ekran uwierzytelniania odciskiem palca.
  3. Gdy aplikacja wyświetli ekran uwierzytelniania odciskiem palca, przejdź do konsoli i wpisz polecenie finger touch oraz utworzony identyfikator odcisku palca. Symuluje to dotknięcie palcem.
  4. Następnie wpisz polecenie finger remove, aby zasymulować usunięcie palca.

    Aplikacja powinna reagować tak, jakby użytkownik dotknął czytnika linii papilarnych, a potem odsunął od niego palec.