Wysyłaj polecenia konsoli emulatora

Każde uruchomione urządzenie wirtualne ma konsolę, która pozwala na wysyłanie zapytań dotyczących emulowanego środowiska urządzenia i sterowanie nim. Gdy aplikacja działa w emulatorze, możesz np. zarządzać przekierowywaniem portów, właściwościami sieci i zdarzeniami związanymi z połączeniami telefonicznymi.

Aby wykonać te polecenia, musisz mieć uruchomiony emulator. Więcej informacji o uruchamianiu emulatora znajdziesz w artykułach na temat uruchamiania aplikacji w emulatorze Androida i uruchamiania emulatora z poziomu wiersza poleceń.

Rozpoczynanie i kończenie sesji konsoli

Aby uzyskać dostęp do konsoli i wpisywać polecenia w oknie terminala, połącz się z portem konsoli za pomocą telnet i podaj token uwierzytelniania. Za każdym razem, gdy konsola wyświetla OK, jest gotowa do przyjmowania poleceń. Nie ma typowych promptów.

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

  1. Otwórz okno terminala i wpisz następujące polecenie:
  2. telnet localhost console-port

    Tytuł okna emulatora zawiera numer portu konsoli, gdy działa w oddzielnym oknie, ale nie w oknie narzędzia. Na przykład tytuł okna emulatora korzystającego z portu 5554 konsoli może wyglądać tak: Nexus_5X_API_23:5554. Polecenie adb devices wyświetla też listę uruchomionych urządzeń wirtualnych wraz z numerami portów konsoli. Więcej informacji znajdziesz w artykule o wysyłaniu zapytań o urządzenia.

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

  3. Gdy w konsoli wyświetli się OK, wpisz polecenie auth auth_token.
  4. Zanim będzie można wpisywać polecenia w konsoli, konsola emulatora wymaga uwierzytelnienia. Plik 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 tworzy 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 nawiązaniu połączenia z konsolą wpisz polecenia konsoli.
  6. Wpisz help, help command lub help-verbose, aby wyświetlić listę poleceń w konsoli i dowiedzieć się więcej o konkretnych 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
    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

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

Dokumentacja polecenia emulatora

W tabeli poniżej opisujemy polecenia konsoli emulatora wraz z ich parametrami i wartościami:

Tabela 1. Polecenia w konsoli emulatora

Polecenia ogólne Opis
avd {stop|start|status|name} Wykonuje zapytania, kontroluje urządzenie wirtualne i nim zarządza w ten sposób:
  • stop: zatrzymuje wykonywanie urządzenia.
  • start: rozpoczyna wykonywanie kodu na urządzeniu.
  • status: wysyła zapytanie o stan urządzenia wirtualnego. Może nim 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: zawiera listę wszystkich zapisanych zrzutów.
  • save name: zapisuje zrzut jako name.
  • load name: wczytuje nazwany zrzut o nazwie.
  • delete name: usuwa nazwany zrzut.

Ten przykład zapisuje zrzut o nazwie firstactivitysnapshot:

avd snapshot save firstactivitysnapshot
fold Składa urządzenie, aby wyświetlić jego mniejszy ekran, jeśli jest składane i obecnie rozłożone.
unfold Rozkładanie urządzenia, na którym wyświetla się większy ekran, jeśli jest składane i obecnie złożone.
kill Powoduje zakończenie działania urządzenia wirtualnego.
ping Sprawdza, czy urządzenie wirtualne jest uruchomione.
rotate Obraca AVD w lewo o 45 stopni.
Awaria emulatora Opis
crash Awaria emulatora podczas wykonywania aplikacji.
crash-on-exit Powoduje awarię emulatora przy zamykaniu aplikacji.
Debuguj tagi Opis
debug tags ...

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

W tym przykładzie włącza się tag radio:

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

Ustawia lokalizację geograficzną raportowaną aplikacjom działającym w emulatorze, wysyłając sygnał GPS do emulatora.

Możesz wykonać jedno z poniższych poleceń geo, gdy tylko urządzenie wirtualne zostanie uruchomione. Emulator ustawia wpisaną lokalizację, tworząc pozorowany dostawca lokalizacji. Ten dostawca odpowiada na detektory lokalizacji ustawione przez aplikacje i przekazuje informację o lokalizacji do: LocationManager. Każda aplikacja może wysłać zapytanie do menedżera lokalizacji, aby uzyskać informacje o aktualnej lokalizacji GPS dla emulowanego urządzenia, wywołując metodę LocationManager.getLastKnownLocation("gps").

geo fix longitude latitude [altitude] [satellites] [velocity] Wysyła prosty sygnał GPS do emulatora. Podaj longitude i latitude w stopniach dziesiętnych. Użyj liczby od 1 do 12, aby określić liczbę zdarzeń typu satellites służących do określania pozycji. Określ altitude w metrach i velocity w węzłach.
geo nmea sentence Wysyła zdanie NMEA 0183 do emulowanego urządzenia tak, jakby zostało wysłane z emulowanego modemu GPS. Rozpocznij sentence od „$GP”. Obecnie obsługiwane są tylko zdania „$GPGGA” i „$GPRCM”. Poniższy przykład to zdanie GPGGA (Global Positioning SystemFix Data), które podaje czas, położenie i poprawia dane 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 związane ze sprzętem Opis
event types Wyświetla listę wszystkich fałszywych typów zdarzeń. W przypadku wydarzeń z kodami ich liczba 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 fałszywy typ zdarzenia.
event codes type Wyświetla kody 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 kodu.

Aby dowiedzieć się, które zdarzenie należy wysłać, możesz użyć polecenia adb i ręcznie nacisnąć przyciski w 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
      
Na przykład, aby zasymulować przytrzymanie przycisku zasilania, wyślij 2 zdarzenia EV_KEY związane z klawiszem i klawiszem:
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óry symuluje naciśnięcia klawiszy. Wiadomość musi być ciągiem UTF-8. Posty w Unicode są mapowane odwrotnie zgodnie z bieżącą klawiaturą urządzenia, a nieobsługiwane znaki są odrzucane.
Sterowanie stanem zasilania Opis
power display Wyświetla stan baterii i ładowarki.
power ac {on|off} Ustawia stan ładowania urządzenia podłączonego do zasilania na on lub off.
power status {unknown|charging|discharging|not-charging|full} Zmienia określony stan baterii.
power present {true|false} Ustawia stan obecności baterii.
power health {unknown|good|overheat|dead|overvoltage|failure} Określa stan baterii.
power capacity percent Ustawia stan pozostałej pojemności baterii jako wartość procentową od 0 do 100.
Stan połączenia sieciowego 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óźnień sieciowych, co pozwala przetestować aplikację w środowisku bardziej typowym dla rzeczywistych warunków działania. Możesz ustawić poziom lub zakres czasu oczekiwania podczas uruchamiania emulatora. Możesz też zmienić opóźnienie w konsoli, gdy aplikacja działa w emulatorze.

Sieć latency ma jeden z tych formatów (liczby w milisekundach):

Format opóźnienia sieciowego:

  • gprs: GPRS, który używa zakresu opóźnienia od 150 do 550.
  • edge: EDGE/EGPRS, który używa zakresu opóźnienia 80 minimum i 400 maksymalnego.
  • umts: UMTS/3G, który używa zakresu opóźnienia od 35 do 200.
  • none: brak czasu oczekiwania.
  • num: emuluje określony czas oczekiwania w milisekundach.
  • min:max: emuluje określony zakres czasu oczekiwania.

Aby ustawić opóźnienie podczas uruchamiania emulatora, użyj opcji emulatora -netdelay z obsługiwaną wartością latency. Więcej informacji znajdziesz na poprzedniej liście formatów opóźnienia w sieci. Oto przykłady:

emulator -netdelay gprs
emulator -netdelay 40,100

Aby zmienić opóźnienie sieci, gdy działa emulator, połącz się z konsolą i użyj polecenia netdelay z obsługiwaną wartością latency z listy formatów opóźnienia w sieci.

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

Możesz ustawić szybkość lub zakres przesyłania podczas uruchamiania emulatora. Możesz też zmieniać szybkość w konsoli, gdy aplikacja działa w emulatorze.

Sieć speed ma jeden z tych formatów (liczby to kilobity/s):

Format szybkości sieci:

  • gsm: GSM/CSD, czyli od 14,4 do 14,4 w górę.
  • hscsd: HSCSD, czyli szybkość 14,4 w górę i 43,2 w dół.
  • gprs: GPRS, który korzysta z szybkości w górę 40,0 i 80,0 w dół.
  • edge: EDGE/EGPRS, czyli szybkość 118,4 w górę i 236,8 w dół.
  • umts: UMTS/3G, czyli prędkość 128,0 w górę i 1920 w dół.
  • hsdpa: HSDPA, czyli szybkość 348,0 w górę i 14 400,0 w dół.
  • lte: LTE, czyli prędkość od 58 000 w górę i 173 000 w dół.
  • evdo: EVDO, który korzysta z prędkości od 75 tys. w górę i 280 000 w dół.
  • full: nieograniczona szybkość, ale zależy od szybkości połączenia komputera.
  • num: określa dokładną szybkość przesyłania (w kilobitach/s) używaną podczas przesyłania i pobierania.
  • up:down: określa dokładne szybkości przesyłania i pobierania (w kilobitach/s).

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

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

Aby zmienić szybkość sieci, gdy działa emulator, połącz się z konsolą i użyj polecenia network speed z obsługiwaną wartością speed z poprzedniej listy formatów szybkości sieci.

network speed 14.4 80
network capture {start|stop} file Wysyła pakiety do pliku. Poniżej znajdziesz 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 telefonii Opis
Emulator Androida zawiera własne emulowane modemy GSM i CDMA, które umożliwiają symulowanie w nim działania funkcji telefonicznych. Dzięki GSM możesz na przykład symulować przychodzące rozmowy telefoniczne oraz nawiązywać i kończyć połączenia transmisji danych. W przypadku CDMA podajesz źródło subskrypcji i preferowaną listę roamingu. System Android obsługuje symulowane połączenia dokładnie tak samo jak prawdziwe połączenia. Emulator nie obsługuje dźwięku połączenia.
gsm {call|accept|cancel|busy} phonenumber Parametry gsm:
  • call: naśladuje przychodzące połączenie telefoniczne od: phonenumber.
  • accept: odbiera połączenie przychodzące od: phonenumber i zmienia stan połączenia na active. Możesz zmienić stan wywołania na active tylko wtedy, gdy jego bieżący stan to waiting lub held.
  • cancel: kończy przychodzące lub wychodzące połączenie telefoniczne z numerem phonenumber.
  • busy: zamyka połączenie wychodzące z numerem phonenumber i zmienia stan połączenia na busy. Możesz zmienić stan wywołania na busy tylko wtedy, gdy obecny 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 następujący sposób:
  • unregistered: brak dostępnej sieci.
  • home: w sieci lokalnej, bez roamingu.
  • roaming: w sieci w roamingu.
  • searching: wyszukiwanie sieci.
  • denied: tylko połączenia alarmowe.
  • off: działa tak samo jak unregistered.
  • on: działa tak samo jak home.
gsm hold Zmienia stan połączenia na hold. Możesz zmienić stan wywołania na hold tylko wtedy, gdy jego bieżący stan to active lub waiting.
gsm list Zawiera listę wszystkich połączeń przychodzących i wychodzących oraz ich stanów.
gsm status Raportuje bieżący stan głosu/danych GSM. Wartości to wartości opisane w poleceniach voice i data.
gsm signal {rssi|ber} Zmienia zgłaszaną siłę sygnału (rssi) i współczynnik 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 rssi mieści się w zakresie od 0 do 31 oraz 99 (nieznany).
  • Zakres ber mieści się w zakresie od 0 do 7 oraz 99 (nieznany).
gsm signal-profile num Służy do ustawiania profilu siły sygnału. num to liczba z zakresu od 0 do 4.
cdma ssource source Ustawianie bieżącego źródła subskrypcji CDMA, gdzie source to lista dozwolonych sieciowa, która zawiera subskrybentów operatora CDMA i ich wartości:
  • nv: odczyt subskrypcji z nieulotnej pamięci RAM.
  • ruim: odczytuje subskrypcję z modułu RUIM (Removable User Identity Module).
cdma prl_version version Zrzuca bieżącą wersję preferowanej listy roamingu (PRL). Numer wersji dotyczy bazy danych PRL, która zawiera informacje używane podczas procesu wyboru i pozyskania systemu.
Zarządzaj czujnikami w emulatorze Opis
Te polecenia określają, które czujniki są dostępne w urządzeniu AVD. Poza użyciem polecenia sensor możesz wyświetlać i zmieniać ustawienia emulatora na ekranie Wirtualne czujniki na kartach Akcelerometr i Dodatkowe czujniki.
sensor status Wyświetla listę wszystkich czujników i ich stanu. Oto przykładowe dane wyjściowe polecenia sensor status:
sensor get sensor-name Pobiera ustawienia dla: sensor-name. Ten przykład pobiera wartość 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 czujników wirtualnych.

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 dwukropkiem.
sensor set acceleration 2.23517e-07:9.77631:0.812348
Emulacja SMS-ów Opis
sms send sender-phone-number textmessage Generuje emulowane wiadomości przychodzące. Poniższa lista zawiera opis parametrów i ich wartości:
  • sender-phone-number: zawiera dowolny ciąg liczbowy.
  • textmessage: wiadomość SMS.

Poniższy przykład wysyła wiadomość „Cześć” na numer telefonu 4085555555:

sms send 4085555555 hi there

Konsola przekazuje SMS-a do platformy Androida, która przekazuje go do aplikacji w emulatorze, która obsługuje SMS-y, np. do aplikacji Wiadomości. Jeśli prześlesz 10 cyfr, aplikacja sformatuje go jako numer telefonu. Dłuższe lub krótsze ciągi liczbowe pokazują sposób ich wysłania.

Symulacja odcisku palca Opis
finger touch fingerprint-id Symuluje dotykanie palca palcem.
finger remove Symuluje usuwanie palca.

Instrukcje korzystania z tych poleceń znajdziesz w sekcji dotyczącej symulowania i weryfikacji odcisku palca poniżej.

Symulacja i weryfikacja odcisku cyfrowego

Rysunek 1. Ekran uwierzytelniania odciskiem palca.

Za pomocą polecenia finger możesz symulować i weryfikować uwierzytelnianie odciskiem palca w aplikacji. Potrzebujesz SDK Tools w wersji 24.3 lub nowszej i Androida 6.0 (poziom interfejsu API 23) lub nowszego.

Aby przeprowadzić symulację i weryfikację uwierzytelniania odciskiem palca, wykonaj te czynności:

  1. Jeśli nie masz jeszcze identyfikatora odcisku palca, zarejestruj nowy odcisk palca w emulatorze – wybierz Ustawienia > Zabezpieczenia > Odcisk palca i postępuj zgodnie z instrukcjami rejestracji.
  2. Skonfiguruj aplikację, aby akceptowała uwierzytelnianie odciskiem palca. Po zakończeniu konfiguracji na urządzeniu wyświetli się ekran uwierzytelniania odciskiem palca.
  3. Gdy w aplikacji wyświetli się ekran uwierzytelniania odciskiem palca, otwórz konsolę i wpisz polecenie finger touch oraz utworzony przez siebie identyfikator odcisku palca. To symulacja dotknięcia palcem.
  4. Następnie wpisz polecenie finger remove, aby przeprowadzić symulację usuwania palca.

    Aplikacja powinna zareagować tak, jakby użytkownik dotknął czytnika linii papilarnych, a potem odłączył go od czytnika.