Uruchamianie emulatora z poziomu wiersza poleceń

Pakiet SDK Androida zawiera emulator urządzenia z Androidem – urządzenie wirtualne, które działa na komputerze. Emulator Androida umożliwia tworzenie i testowanie aplikacji na Androida bez używania fizycznego urządzenia.

Na tej stronie opisaliśmy funkcje wiersza poleceń, których możesz używać w emulatorze Androida. Więcej informacji o korzystaniu z interfejsu emulatora Androida znajdziesz w artykule Uruchamianie aplikacji na emulatorze Androida.

Uruchamianie emulatora

Użyj polecenia emulator, aby uruchomić emulator. Możesz też uruchomić projekt lub uruchomić go w Menedżerze AVD.

Oto podstawowa składnia wiersza poleceń do uruchamiania urządzenia wirtualnego z poziomu wiersza poleceń terminala:

emulator -avd avd_name [ {-option [value]} … ]

Lub

emulator @avd_name [ {-option [value]} … ]

Jeśli na przykład uruchomisz emulator z Androida Studio działającego na komputerze Mac, domyślna linia poleceń będzie podobna do tej:

/Users/janedoe/Library/Android/sdk/emulator/emulator -avd Pixel8_API_34 -netdelay none -netspeed full -qt-hide-window -grpc-use-token -idle-grpc-timeout

Pamiętaj, że argumenty -qt-hide-window -grpc-use-token -idle-grpc-timeout są używane tylko do uruchamiania okna emulatora w Android Studio. Jeśli chcesz uruchomić emulator w osobnym oknie, nie używaj tych dodatkowych parametrów.

Opcje uruchamiania możesz określić podczas uruchamiania emulatora, ale nie po jego uruchomieniu.

Aby wyświetlić listę nazw AVD, wpisz to polecenie:

emulator -list-avds

Użyj tej opcji, aby wyświetlić listę nazw AVD z katalogu domowego Androida. Możesz zastąpić domyślny katalog domowy, ustawiając zmienną środowiskową ANDROID_SDK_HOME, która określa katalog główny katalogu użytkownika, w którym przechowywane są wszystkie konfiguracje i zawartość AVD.

Zmienną środowiskową możesz ustawić w oknie terminala przed uruchomieniem urządzenia wirtualnego lub w ustawieniach użytkownika w systemie operacyjnym. Na przykład w pliku .bashrc w systemie Linux.

Aby zatrzymać emulator Androida, zamknij okno emulatora.

Instalowanie aplikacji

Oprócz instalowania aplikacji za pomocą Android Studio lub interfejsu emulatora możesz zainstalować aplikację na urządzeniu wirtualnym za pomocą narzędzia adb.

Aby zainstalować, uruchomić i przetestować aplikację za pomocą adb, wykonaj te ogólne czynności:

  1. Utwórz i spakuj aplikację w pakiet APK zgodnie z opisem w sekcji Tworzenie i uruchamianie aplikacji.
  2. Uruchom emulator z wiersza poleceń, jak opisano w poprzedniej sekcji, używając w razie potrzeby dowolnych opcji uruchamiania.
  3. Zainstaluj aplikację za pomocą adb.
  4. Uruchom i przetestuj aplikację w emulatorze.
    Gdy emulator jest uruchomiony, możesz używać konsoli emulatora do wydawania poleceń w razie potrzeby.

Aby odinstalować aplikację, wykonaj te same czynności co na urządzeniu z Androidem.

Urządzenie wirtualne zachowuje aplikację i jej dane stanu po ponownym uruchomieniu w partycji dysku danych użytkownika (userdata-qemu.img). Aby wyczyścić te dane, uruchom emulator z opcją -wipe-data lub wyczyść dane w Menedżerze AVD. Więcej informacji o partycji danych użytkownika i innych miejscach na dane znajdziesz w następnej sekcji.

Uwaga: narzędzie adb traktuje urządzenie wirtualne jako rzeczywiste urządzenie fizyczne. Z tego powodu w przypadku niektórych typowych poleceń adb, takich jak install, może być konieczne użycie flagi -d. Flaga -d pozwala określić, które z kilku połączonych urządzeń ma być celem polecenia. Jeśli nie określisz -d, emulator będzie kierowany na pierwsze urządzenie na liście.

Omówienie domyślnych katalogów i plików

Emulator korzysta z powiązanych plików, z których najważniejsze są katalogi systemowe i danych AVD. Znajomość struktury katalogów i plików emulatora jest przydatna podczas określania opcji wiersza poleceń, chociaż zwykle nie trzeba modyfikować domyślnych katalogów ani plików.

Emulator Androida korzysta z hiperwizora QEMU.

Katalog systemowy AVD

Katalog systemowy zawiera obrazy systemu Android, których emulator używa do symulowania systemu operacyjnego. Ten katalog zawiera pliki tylko do odczytu specyficzne dla platformy, które są współdzielone przez wszystkie AVD tego samego typu, w tym poziomu interfejsu API, architektury procesora i wersji Androida. Domyślne lokalizacje to:

  • macOS i Linux – ~/Library/Android/sdk/system-images/android-apiLevel/variant/arch/
  • Windows – C:\Users\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\

Gdzie:

  • apiLevel to numeryczny poziom interfejsu API lub litera w przypadku wersji przedpremierowych. Na przykład android-V oznacza podgląd Androida w wersji VanillaIceCream. W momencie wprowadzenia na rynek był to poziom API 35, oznaczony jako android-35.
  • variant to nazwa odpowiadająca konkretnym funkcjom zastosowanym w obrazie systemu. Na przykład google_apis lub android-wear.
  • arch to docelowa architektura procesora. Na przykład: x86.

Użyj opcji -sysdir, aby określić inny katalog systemowy dla AVD.

Emulator odczytuje z katalogu systemowego te pliki:

Tabela 1. Pliki katalogu systemowego odczytywane przez emulator Androida

Plik Opis Możliwość wskazania innego pliku
kernel-qemu lub kernel-ranchu Binarny obraz jądra dla AVD. kernel-ranchu działa na podstawie emulatora QEMU. -kernel
ramdisk.img Obraz partycji rozruchowej. Jest to podzbiór system.img wczytywany początkowo przez jądro przed zamontowaniem obrazu systemu. Zwykle zawiera tylko kilka plików binarnych i skryptów inicjujących. -ramdisk
system.img Początkowa wersja obrazu systemu tylko do odczytu. W szczególności partycja zawierająca biblioteki systemowe i dane odpowiadające poziomowi interfejsu API i wariantowi. -system
userdata.img Początkowa wersja partycji danych, która w emulowanym systemie jest oznaczona jako data/ i zawiera wszystkie dane, które można zapisywać na AVD. Emulator używa tego pliku, gdy tworzysz nowy AVD lub korzystasz z opcji ‑wipe-data. Więcej informacji znajdziesz w userdata-qemu.imgopisie pliku w sekcji poniżej. -initdata
-init-data

Katalog danych AVD

Katalog danych AVD, zwany też katalogiem treści, jest przypisany do pojedynczej instancji AVD i zawiera wszystkie dane AVD, które można modyfikować.

Domyślna lokalizacja to: name, gdzie name to nazwa AVD.

  • macOS i Linux – ~/.android/avd/name.avd/
  • Windows 10 i nowszy.C:\Users\user\.android\name.avd\

Użyj opcji -datadir, aby określić inny katalog danych AVD.

Poniższa tabela zawiera listę najważniejszych plików znajdujących się w tym katalogu:

Tabela 2. Ważne pliki w katalogu danych AVD

Plik Opis Możliwość wskazania innego pliku
userdata-qemu.img

Zawartość partycji danych, która w emulowanym systemie jest oznaczona symbolem data/. Gdy tworzysz nowy AVD lub używasz opcji -wipe-data, aby przywrócić AVD do ustawień fabrycznych, emulator kopiuje plik userdata.img w katalogu systemowym, aby utworzyć ten plik.

Każda instancja urządzenia wirtualnego używa obrazu danych użytkownika z możliwością zapisu do przechowywania danych użytkownika i danych sesji. Na przykład używa obrazu do przechowywania danych zainstalowanych aplikacji, ustawień, baz danych i plików unikalnego użytkownika. Każdy użytkownik ma inny katalog ANDROID_SDK_HOME, w którym są przechowywane katalogi danych dla utworzonych przez niego wirtualnych urządzeń z Androidem. Każdy AVD ma 1 plik userdata-qemu.img.

-data
cache.img Obraz partycji pamięci podręcznej, który w emulowanym systemie jest wyświetlany jako cache/. Gdy po raz pierwszy utworzysz AVD lub użyjesz opcji -wipe-data, będzie on pusty. Przechowuje tymczasowe pliki pobierania i jest wypełniany przez menedżera pobierania, a czasami przez system. Przeglądarka używa go na przykład do przechowywania w pamięci podręcznej pobranych stron internetowych i obrazów podczas działania emulatora. Gdy wyłączysz urządzenie wirtualne, plik zostanie usunięty. Możesz zachować plik, korzystając z opcji -cache. -cache
sdcard.img

(Opcjonalnie) Obraz partycji karty SD, który umożliwia symulowanie karty SD na urządzeniu wirtualnym. Plik obrazu karty SD możesz utworzyć w AVD Manager lub za pomocą narzędzia mksdcard. Plik jest przechowywany na komputerze deweloperskim i musi być wczytywany podczas uruchamiania.

Podczas definiowania AVD w AVD Managerze możesz użyć automatycznie zarządzanego pliku karty SD lub pliku utworzonego za pomocą narzędzia mksdcard. W Menedżerze AVD możesz wyświetlić sdcard.img powiązany z AVD. Opcja -sdcard zastępuje plik karty SD określony w AVD. Pamiętaj, że ta opcja karty SD nie będzie działać na komputerach Mac z Apple Silicon.

Podczas działania urządzenia wirtualnego możesz przeglądać, wysyłać, kopiować i usuwać pliki z symulowanej karty SD za pomocą interfejsu emulatora lub narzędzia adb. Nie możesz usunąć symulowanej karty SD z działającego urządzenia wirtualnego.

Aby skopiować pliki na kartę SD przed załadowaniem, zamontuj plik obrazu jako urządzenie pętli, a następnie skopiuj pliki. Możesz też użyć narzędzia, np. pakietu mtools, aby skopiować pliki bezpośrednio do obrazu.

Emulator traktuje plik jako pulę bajtów, więc format karty SD nie ma znaczenia.

Opcja -wipe-data nie ma wpływu na ten plik. Jeśli chcesz wyczyścić plik, usuń go, a następnie utwórz ponownie za pomocą Menedżera AVD lub narzędzia mksdcard. Zmiana rozmiaru pliku również powoduje usunięcie pliku i utworzenie nowego.

-sdcard

Wyświetlanie listy katalogów i plików używanych przez emulator

Lokalizację plików możesz sprawdzić na 2 sposoby:

  • Użyj opcji -verbose lub -debug init, gdy uruchamiasz emulator z wiersza poleceń. Przyjrzyj się wynikom.
  • Użyj polecenia emulator -help-option, aby wyświetlić listę domyślnego katalogu. Na przykład:
    emulator -help-datadir
    Use '-datadir <dir>' to specify a directory where writable image files will be searched. On this system, the default directory is: /Users/me/.android See '-help-disk-images' for more information about disk image files.

Opcje uruchamiania wiersza poleceń

W tej sekcji znajdziesz listę opcji, które możesz podać w wierszu poleceń podczas uruchamiania emulatora.

Uwaga: Emulator Androida jest stale rozwijany, aby zwiększyć jego niezawodność. Aby sprawdzić stan problemów zgłoszonych w związku z różnymi opcjami wiersza poleceń i zgłosić błędy, otwórz rejestr problemów z Androidem.

Najczęściej używane opcje

W tabeli poniżej znajdziesz opcje uruchamiania wiersza poleceń, których możesz używać częściej:

Tabela 3. Najczęściej używane opcje wiersza poleceń

Opcja wiersza poleceń Opis
Szybkie uruchamianie
-no-snapshot-load Przeprowadza zimny rozruch i zapisuje stan emulatora po zamknięciu.
-no-snapshot-save W miarę możliwości wykonuje szybkie uruchomienie, ale nie zapisuje stanu emulatora po zamknięciu.
-no-snapshot Całkowicie wyłącza funkcję szybkiego uruchamiania i nie wczytuje ani nie zapisuje stanu emulatora.
Sprzęt urządzenia
-camera-back mode
-camera-front mode
Ustawia tryb emulacji dla kamery skierowanej do tyłu lub do przodu. Zastępuje to wszystkie ustawienia kamery w AVD.

mode może mieć jedną z tych wartości:

  • emulated – emulator symuluje aparat w oprogramowaniu.
  • webcamn – emulator używa kamery internetowej podłączonej do komputera deweloperskiego, określonej numerem. Listę kamer internetowych znajdziesz w sekcji -webcam-list. Na przykład: webcam0.
  • none – wyłącza aparat na urządzeniu wirtualnym.

Na przykład:

emulator @Pixel8_API_34 -camera-back webcam0
-webcam-list Wyświetla listę kamer internetowych na komputerze deweloperskim, które są dostępne do emulacji. Na przykład:
emulator @Pixel8_API_34 -webcam-list
        List of web cameras connected to the computer:
        Camera 'webcam0' is connected to device 'webcam0'
        on channel 0 using pixel format 'UYVY'

W tym przykładzie pierwszy znak webcam0 to nazwa używana w wierszu poleceń. Drugi znak webcam0 to nazwa używana przez system operacyjny na komputerze deweloperskim. Druga nazwa różni się w zależności od systemu operacyjnego.

Od wersji 25.2.4 narzędzi SDK wymagana jest nazwa AVD.

Obrazy dysku i pamięć
-memory size

Określa rozmiar pamięci RAM (od 1536 MB do 8192 MB). Na przykład:

emulator @Pixel8_API_34 -memory 2048

Ta wartość zastępuje ustawienie AVD.

-sdcard filepath Określa nazwę pliku i ścieżkę do pliku obrazu partycji karty SD. Obejmuje to na przykład:

emulator @Pixel8_API_34 -sdcard C:/sd/sdcard.img

Jeśli plik nie zostanie znaleziony, emulator uruchomi się bez karty SD. Polecenie zwraca ostrzeżenie No SD Card Image (Brak obrazu karty SD).

Jeśli nie określisz tej opcji, domyślnie będzie używana wartość sdcard.img w katalogu danych, chyba że AVD określa inną wartość. Więcej informacji o emulowanych kartach SD znajdziesz w artykule Katalog danych AVD.

-wipe-data Usuwa dane użytkownika i kopiuje dane z początkowego pliku danych. Ta opcja usuwa dane urządzenia wirtualnego i przywraca je do stanu, w jakim było po pierwszym zdefiniowaniu. Wszystkie zainstalowane aplikacje i ustawienia zostaną usunięte. Na przykład:

emulator @Pixel8_API_34 -wipe-data

Domyślnie plik danych użytkownika to userdata-qemu.img, a plik danych początkowych to userdata.img. Oba te pliki znajdują się w katalogu danych. Opcja -wipe-data nie ma wpływu na plik sdcard.img. Więcej informacji o danych użytkownika znajdziesz w sekcji Omówienie domyślnych katalogów i plików.

Debuguj
-debug tags Włącza lub wyłącza wyświetlanie komunikatów debugowania w przypadku co najmniej jednego tagu. Poszczególne tagi oddziel spacją, przecinkiem lub dwukropkiem. Na przykład:

$ emulator @Pixel8_API_34 -debug init,metrics

Aby wyłączyć tag, umieść przed nim myślnik (-). Na przykład ta opcja wyświetla wszystkie komunikaty debugowania z wyjątkiem tych, które są związane z gniazdami sieciowymi i danymi:

-debug all,-socket,-metrics

Aby wyświetlić listę tagów i opisów, użyj opcji -help-debug-tags. Na przykład:

emulator -help-debug-tags

Domyślne tagi debugowania możesz zdefiniować w zmiennej środowiskowej ANDROID_VERBOSE. Określ tagi, których chcesz używać, na liście rozdzielonej przecinkami. Oto przykład, który pokazuje, jak określić tagi socketgles:

ANDROID_VERBOSE=socket,gles

Jest to równoznaczne z użyciem:

-debug-socket -debug-gles

lub

-debug socket,gles

-debug-tag
-debug-no-tag
Włącza określony typ wiadomości debugowania. Użyj formularza no, aby wyłączyć typ wiadomości debugowania. Na przykład:

emulator @Pixel8_API_34 -debug-all -debug-no-metrics

Aby wyświetlić listę tagów, użyj polecenia emulator -help-debug-tags.

-logcat logtags Umożliwia wyświetlanie komunikatów Logcat dla co najmniej 1 tagu i zapisywanie ich w oknie terminala. Na przykład to polecenie włącza komunikaty o błędach ze wszystkich komponentów:

emulator @Pixel8_API_34 -logcat *:e

logtags używa tego samego formatu co polecenie adb logcat logtags. Więcej informacji znajdziesz w sekcji adb logcat -help. Jest to lista filtrów logów rozdzielonych spacjami lub przecinkami w formacie componentName:logLevel. componentName to symbol wieloznaczny w postaci gwiazdki (*) lub nazwa komponentu, np. ActivityManager, SystemServer, InputManager lub WindowManager.

logLevel to jedna z tych wartości:

  • v – szczegółowe
  • d – debugowanie
  • i – informacyjny
  • w – poziom logowania ostrzeżeń
  • e – błąd
  • s – wyciszony

Ten przykład pokazuje komunikaty komponentu GSM na poziomie dziennika informacyjnego:

emulator @Pixel8_API_34 -logcat '*:s GSM:i'

Jeśli nie podasz opcji -logcat w wierszu poleceń, emulator wyszuka zmienną środowiskową ANDROID_LOG_TAGS. Jeśli ANDROID_LOG_TAGS jest zdefiniowane z prawidłową wartością logtags i nie jest puste, emulator domyślnie używa tej wartości, aby włączyć dane wyjściowe Logcat w terminalu. Możesz też przekierować te same lub inne wiadomości dziennika do terminala za pomocą adb.

Więcej informacji o Logcat i adb znajdziesz w narzędziu wiersza poleceń Logcat, wyświetlaniu i pisaniu logów za pomocą Logcat, klasie Logwydawaniu poleceń adb.

-show-kernel Wyświetla komunikaty debugowania jądra w oknie terminala. Na przykład:

emulator @Pixel8_API_34 -show-kernel

Jednym z zastosowań tej opcji jest sprawdzenie, czy proces uruchamiania działa prawidłowo.

-verbose Wyświetla komunikaty inicjowania emulatora w oknie terminala. Obejmuje to na przykład:

emulator @Pixel8_API_34 -verbose

Wyświetla, które pliki i ustawienia są faktycznie wybrane podczas uruchamiania urządzenia wirtualnego zdefiniowanego w AVD. Ta opcja jest równoznaczna z określeniem -debug-init.

Sieć
-dns-server servers Używa określonych serwerów DNS. servers to rozdzielona przecinkami lista maksymalnie 4 nazw serwerów DNS lub adresów IP. Obejmuje to na przykład:
emulator @Pixel8_API_34 -dns-server 192.0.2.0,
192.0.2.255

Domyślnie emulator próbuje wykryć używane serwery DNS i skonfigurować specjalne aliasy w emulowanej sieci zapory, aby umożliwić systemowi Android bezpośrednie łączenie się z serwerami. Użyj opcji -dns-server, aby określić inną listę serwerów DNS.

-http-proxy proxy Umożliwia nawiązywanie wszystkich połączeń TCP przez określony serwer proxy HTTP/HTTPS. Jeśli emulator musi uzyskiwać dostęp do internetu przez serwer proxy, możesz użyć tej opcji lub zmiennej środowiskowej http_proxy, aby skonfigurować odpowiednie przekierowanie. Na przykład:

emulator @Pixel8_API_34 -http-proxy myserver:1981

proxy może mieć jedną z tych wartości:

http://server:port
http://username:password@server:port

Prefiks http:// można pominąć.

Jeśli ta opcja nie zostanie podana, emulator wyszuka zmienną środowiskową http_proxy i automatycznie użyje dowolnej wartości pasującej do formatu proxy. Więcej informacji znajdziesz w artykule Korzystanie z emulatora z serwerem proxy.

-netdelay delay

Ustawia emulację opóźnienia sieci na jedną z tych wartości w milisekundach:delay

  • gsm – GSM/CSD (min. 150, maks. 550).
  • hscsd – HSCSD (min. 80, maks. 400).
  • gprs – GPRS (min. 35, maks. 200).
  • edge – EDGE/EGPRS (min. 80, maks. 400).
  • umts – UMTS/3G (min. 35, maks. 200).
  • hsdpa - HSDPA (min 0, max 0).
  • lte – LTE (min. 0, maks. 0).
  • evdo – EVDO (min. 0, maks. 0).
  • none – brak opóźnienia, wartość domyślna (min. 0, maks. 0).
  • num – określa dokładny czas oczekiwania.
  • min:max – określa poszczególne minimalne i maksymalne opóźnienia.

Na przykład:

emulator @Pixel8_API_34 -netdelay gsm

Emulator obsługuje ograniczanie przepustowości sieci oraz większe opóźnienia połączenia. Możesz go zdefiniować w konfiguracji skórki lub za pomocą opcji ‑netspeed-netdelay.

-netfast Wyłącza ograniczanie przepustowości sieci. Na przykład:

emulator @Pixel8_API_34 -netfast

Ta opcja jest taka sama jak określenie -netspeed full -netdelay none. Są to domyślne wartości tych opcji.

-netspeed speed

Ustawia emulację prędkości sieci. Określa maksymalną szybkość przesyłania i pobierania danych w sieci za pomocą jednej z tych speed wartości w kb/s:

  • gsm – GSM/CSD (wysyłanie: 14,4, pobieranie: 14,4).
  • hscsd - HSCSD (wysyłanie: 14,4, pobieranie: 57,6).
  • gprs – GPRS (wysyłanie: 28,8, pobieranie: 57,6).
  • edge – EDGE/EGPRS (wysyłanie: 473,6, pobieranie: 473,6).
  • umts – UMTS/3G (wysyłanie: 384,0, pobieranie: 384,0).
  • hsdpa – HSDPA (wysyłanie: 5760,0, pobieranie: 13 980,0).
  • lte – LTE (wysyłanie: 58 000, pobieranie: 173 000).
  • evdo – EVDO (wysyłanie: 75 000, pobieranie: 280 000).
  • full – brak limitu, wartość domyślna (góra: 0,0, dół: 0,0).
  • num – określa szybkość przesyłania i pobierania.
  • up:down – określa poszczególne szybkości przesyłania i pobierania.

Na przykład:

emulator @Pixel8_API_34 -netspeed edge

Emulator obsługuje ograniczanie przepustowości sieci oraz większe opóźnienia połączenia. Możesz go zdefiniować w konfiguracji skórki lub za pomocą opcji ‑netspeed-netdelay.

-port port Ustawia numer portu TCP używanego w konsoli i adb. Na przykład:

emulator @Pixel8_API_34 -port 5556

Wartość domyślna to 5554 w przypadku pierwszej instancji urządzenia wirtualnego uruchomionej na Twoim komputerze. Urządzenie wirtualne zajmuje zwykle parę sąsiadujących portów: port konsoli i port adb. Konsola pierwszego urządzenia wirtualnego działającego na konkretnej maszynie korzysta z portu konsoli 5554 i adb portu 5555. Kolejne instancje używają numerów portów zwiększanych o 2. Na przykład 5556/5557, 5558/5559 itd. Zakres to 5554–5682, co pozwala na 64 wirtualne urządzenia jednocześnie.

Przypisania portów są często takie same jak w przypadku określenia -ports port,{port + 1}. {port + 1} musi być bezpłatny i jest zarezerwowany dla adb. Jeśli którykolwiek z portów konsoli lub adb jest już używany, emulator nie uruchomi się.

Opcja ‑port podaje, których portów i numeru seryjnego używa urządzenie wirtualne, i ostrzega, jeśli występują problemy z podanymi wartościami. W interfejsie emulatora numer portu konsoli jest widoczny w tytule okna. Numer portu adb możesz też sprawdzić, klikając Pomoc > Informacje.

Jeśli wartość port nie jest parzysta i mieści się w zakresie od 5554 do 5584, urządzenie wirtualne zostanie uruchomione, ale nie będzie widoczne po użyciu polecenia adb devices, jeśli adb server zostanie uruchomiony po emulatorze. Dlatego zalecamy używanie parzystego numeru portu konsoli.

-ports
console-port,adb-port
Ustawia porty TCP używane przez konsolę i adb. Na przykład:

emulator @Pixel8_API_34 -ports 5556,5559

Prawidłowy zakres portów to 5554–5682, co pozwala na 64 równoczesne urządzenia wirtualne. Opcja -ports informuje, których portów i numeru seryjnego używa instancja emulatora, i ostrzega, jeśli występują problemy z podanymi wartościami.

W miarę możliwości zalecamy używanie opcji -port. Opcja -ports jest dostępna w przypadku konfiguracji sieci, które wymagają specjalnych ustawień.

Więcej informacji o konfigurowaniu portów konsoli i adb znajdziesz w sekcji opcji -port.

-tcpdump filepath Przechwytuje pakiety sieciowe i zapisuje je w pliku. Na przykład:

emulator @Pixel8_API_34 -tcpdump /path/dumpfile.cap

Użyj tej opcji, aby rozpocząć przechwytywanie wszystkich pakietów sieciowych wysyłanych przez wirtualną sieć LAN Ethernet emulatora. Następnie możesz użyć narzędzia takiego jak Wireshark, aby przeanalizować ruch.

Pamiętaj, że ta opcja rejestruje wszystkie pakiety Ethernet i nie ogranicza się do połączeń TCP.

System
-accel mode Konfiguruje akcelerację maszyny wirtualnej emulatora. Na przykład:

emulator @Pixel8_API_34 -accel auto

Przyspieszona emulacja działa tylko w przypadku obrazów systemu x86 i x86_64. W systemie Linux korzysta z KVM. W systemach Windows i Mac korzysta z procesora Intel i sterownika Intel HAXM. Ta opcja jest ignorowana, jeśli nie emulujesz urządzenia x86 ani x86_64.

Prawidłowe wartości w polu mode:

  • auto – automatycznie określa, czy akceleracja jest obsługiwana, i w razie potrzeby jej używa (domyślnie).
  • off – całkowicie wyłącza akcelerację, co jest przydatne głównie do debugowania.
  • on – wymusza przyspieszenie. Jeśli KVM lub HAXM nie jest zainstalowany lub nie można go używać, emulator nie uruchomi się i wyświetli komunikat o błędzie.

Więcej informacji znajdziesz w artykule Konfigurowanie akceleracji sprzętowej na potrzeby emulatora Androida.

-accel-check Sprawdza, czy jest zainstalowany wymagany hiperwizor do przyspieszania działania maszyny wirtualnej emulatora (HAXM lub KVM). Na przykład:

emulator -accel-check

Więcej informacji znajdziesz w artykule Sprawdzanie, czy hipernadzorca jest zainstalowany.

-engine engine

Określa silnik emulatora:

  • auto – automatycznie wybiera wyszukiwarkę (domyślnie).
  • classic – korzysta ze starszego silnika QEMU 1 (wycofany).
  • qemu2 – korzysta z nowszego silnika QEMU 2.

Na przykład:

emulator @Pixel8_API_34 -engine auto

Automatyczne wykrywanie powinno wybierać wartość, która zapewnia najlepszą wydajność podczas emulowania konkretnego AVD. Opcji -engine używaj tylko do debugowania i porównywania.

-gpu mode Wybiera tryb emulacji GPU. Na przykład:

emulator @Pixel8_API_34 -gpu swiftshader_indirect

Więcej informacji znajdziesz w artykule Konfigurowanie akceleracji grafiki.

-no-accel Wyłącza akcelerację maszyny wirtualnej emulatora podczas korzystania z obrazu systemu x86 lub x86_64. Jest przydatna tylko do debugowania i działa tak samo jak określenie wartości -accel off. Na przykład:

emulator @Pixel8_API_34 -no-accel

Więcej informacji znajdziesz w artykule Konfigurowanie akceleracji sprzętowej na potrzeby emulatora Androida.

-nojni
-no-jni
Wyłącza rozszerzone sprawdzanie interfejsu Java Native Interface (JNI) w środowisku wykonawczym Androida Dalvik lub ART. Na przykład:

emulator @Pixel8_API_34 -nojni

Gdy uruchamiasz urządzenie wirtualne, rozszerzone sprawdzanie JNI jest domyślnie włączone. Więcej informacji znajdziesz w wskazówkach dotyczących JNI.

-selinux {disabled|permissive} Ustawia moduł zabezpieczeń SELinux w systemie operacyjnym Linux w trybie disabled lub permissive. Na przykład:

me-linux$ emulator @Pixel8_API_34 -selinux permissive

Domyślnie SELinux działa w trybie enforcing, co oznacza, że zasady zabezpieczeń są wymuszane. Tryb permissive wczytuje zasady SELinux, ale ich nie egzekwuje. Ta opcja rejestruje tylko naruszenia zasad. Tryb disabled wyłącza obsługę SELinux w jądrze.

-timezone timezone

Ustawia strefę czasową urządzenia wirtualnego na timezone zamiast strefy czasowej hosta. Obejmuje to na przykład:

emulator @Pixel8_API_34 -timezone Europe/Paris

Domyślnie emulator używa strefy czasowej komputera deweloperskiego. Użyj tej opcji, aby określić inną strefę czasową lub jeśli automatyczne wykrywanie nie działa prawidłowo. Wartość timezone musi mieć format zoneinfo, czyli area/location lub area/subarea/location. Na przykład:

  • America/Los_Angeles
  • Europe/Paris
  • America/Argentina/Buenos_Aires

Określona strefa czasowa musi znajdować się w bazie danych zoneinfo.

-version Wyświetla numer wersji emulatora. Na przykład:

emulator @Pixel8_API_34 -version

Lub

emulator -version
Interfejs
-no-boot-anim Wyłącza animację rozruchu podczas uruchamiania emulatora, aby przyspieszyć rozruch. Na przykład:

emulator @Pixel8_API_34 -no-boot-anim

Na wolniejszych komputerach ta opcja może znacznie przyspieszyć sekwencję uruchamiania.

-screen mode Ustawia tryb emulowanego ekranu dotykowego. Na przykład:

emulator @Pixel8_API_34 -screen no-touch

mode może mieć jedną z tych wartości:

  • touch – emuluje ekran dotykowy (domyślnie).
  • multi-touch – emuluje ekran z technologią wielodotykową.
  • no-touch – wyłącza emulację ekranu dotykowego i wielodotykowego.

Opcje zaawansowane

Opcje uruchamiania wiersza poleceń w poniższej tabeli są dostępne, ale nie są powszechnie używane przez przeciętnego programistę aplikacji.

W opisach katalog roboczy to bieżący katalog w terminalu, w którym wpisujesz polecenia. Informacje o katalogu systemowym i katalogu danych AVD oraz plikach w nich przechowywanych znajdziesz w sekcji domyślne katalogi i pliki.

Niektóre z tych opcji są odpowiednie dla zewnętrznych deweloperów aplikacji, a inne są używane głównie przez deweloperów platform. Deweloperzy aplikacji tworzą aplikacje na Androida i uruchamiają je na określonych wirtualnych urządzeniach z Androidem. Deweloperzy platformy pracują nad systemem Android i uruchamiają go w emulatorze bez wstępnie utworzonego AVD.

Tabela 4. Zaawansowane opcje wiersza poleceń

Opcja zaawansowana Krótki opis
-bootchart timeout

Włącza tworzenie wykresu rozruchu z limitem czasu w sekundach. Niektóre obrazy systemu Android mają zmodyfikowany system inicjowania, który integruje funkcję tworzenia wykresu rozruchu. Za pomocą tej opcji możesz przekazać do systemu okres limitu czasu uruchamiania. Jeśli system inicjujący nie ma aktywnego narzędzia bootcharting, ta opcja nie będzie miała żadnego wpływu. Ta opcja jest przydatna głównie dla deweloperów platform, a nie deweloperów aplikacji zewnętrznych.

Na przykład:

emulator @Pixel8_API_34 -bootchart 120
-cache filepath

Określa plik obrazu partycji pamięci podręcznej. Podaje nazwę pliku oraz ścieżkę bezwzględną lub względną do katalogu danych, aby skonfigurować trwały plik pamięci podręcznej. Jeśli plik nie istnieje, emulator utworzy go jako pusty plik.

Na przykład:

emulator @Pixel8_API_34 -cache
   ~/.android/avd/Pixel8_API_34.avd/cache_persistent.img

Jeśli nie użyjesz tej opcji, domyślnie zostanie utworzony plik tymczasowy o nazwie cache.img. Więcej informacji znajdziesz w katalogu danych AVD.

-cache-size size

Ustawia rozmiar partycji pamięci podręcznej w MB.

Na przykład:

emulator @Pixel8_API_34 -cache-size 1000

Jeśli nie określisz tej opcji, domyślna wartość to 66 MB. Zwykle większość deweloperów aplikacji nie potrzebuje tej opcji, chyba że muszą pobrać bardzo duże pliki, które są większe niż domyślna pamięć podręczna. Więcej informacji o pliku pamięci podręcznej znajdziesz w katalogu danych AVD.

-data filepath

Ustawia plik obrazu partycji danych użytkownika. Podaje nazwę pliku oraz ścieżkę bezwzględną lub ścieżkę względną do katalogu roboczego, aby skonfigurować trwały plik danych użytkownika. Jeśli plik nie istnieje, emulator tworzy obraz z domyślnego pliku userdata.img, zapisuje go w określonym pliku i zapisuje w nim dane użytkownika po wyłączeniu.

Na przykład:

emulator @Pixel8_API_34 -data
   ~/.android/avd/Pixel8_API_34.avd/userdata-test.img

Jeśli nie użyjesz tej opcji, domyślnie zostanie użyty plik o nazwie userdata-qemu.img. Więcej informacji o pliku danych użytkownika znajdziesz w katalogu danych AVD.

-datadir dir

Określa katalog danych za pomocą ścieżki bezwzględnej. Więcej informacji znajdziesz w artykule Katalog danych AVD.

Na przykład:

emulator @Pixel8_API_34 -datadir
   ~/.android/avd/Pixel8_API_34.avd/mytest
-force-32bit

Używa emulatora 32-bitowego na platformach 64-bitowych. Czasami ta opcja jest przydatna do testowania lub debugowania. Na przykład występował problem, który powodował, że emulator czasami nie działał w 64-bitowej wersji systemu Windows, ale działał w 32-bitowej. Ta opcja była przydatna do porównywania i debugowania problemu. Oto przykład:

emulator @Pixel8_API_34 -force-32bit
-help-disk-images

Wyświetla pomoc dotyczącą obrazów dysków. Ta opcja zawiera informacje istotne zarówno dla deweloperów aplikacji, jak i dla deweloperów platform. Na przykład:

emulator -help-disk-images
-help-char-devices

Uzyskaj pomoc dotyczącą specyfikacji znaku device. Parametr A device jest wymagany w przypadku niektórych opcji emulatora. Na przykład:

emulator -help-char-devices
-help-sdk-images

Uzyskiwanie pomocy dotyczącej obrazów dysków przydatnych dla deweloperów aplikacji. Ta opcja pobiera informacje o tym, gdzie znajdują się pliki obrazów w przypadku AVD utworzonego za pomocą narzędzi SDK. Na przykład:

emulator -help-sdk-images
-help-build-images

Uzyskiwanie pomocy dotyczącej obrazów dysków przydatnych dla deweloperów platform. Na przykład:

emulator -help-build-images
-initdata filepath
-init-data filepath

Określa początkową wersję partycji danych. Po wyczyszczeniu danych użytkownika emulator kopiuje zawartość określonego pliku do danych użytkownika (domyślnie pliku userdata-qemu.img) zamiast używać domyślnego pliku userdata.img jako wersji początkowej. Określa nazwę pliku oraz ścieżkę bezwzględną lub ścieżkę względną do katalogu roboczego.

Na przykład:

emulator @Pixel8_API_34 -initdata
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/userdata-test.img

Jeśli nie określisz ścieżki, plik zostanie umieszczony w katalogu systemowym. Więcej informacji znajdziesz w artykule Katalog systemowy AVD.

-kernel filepath

Używa określonego emulowanego jądra. Jeśli nie określisz ścieżki, emulator będzie szukać w katalogu systemowym.

Użyj opcji ‑show‑kernel, aby wyświetlić komunikaty debugowania jądra.

Na przykład:

emulator @Pixel8_API_34 -kernel
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/kernel-test.img -show-kernel

Jeśli nie podasz tej opcji, domyślną wartością będzie kernel-ranchu. Więcej informacji znajdziesz w artykule Katalog systemowy AVD.

-noaudio
-no-audio

Wyłącza obsługę dźwięku na tym urządzeniu wirtualnym. Niektóre komputery z systemem Linux i Windows mają wadliwe sterowniki audio, które powodują różne objawy, np. uniemożliwiają uruchomienie emulatora. W takim przypadku użyj tej opcji, aby rozwiązać problem. Możesz też użyć QEMU_AUDIO_DRV zmiennej środowiskowej, aby zmienić backend audio.

Na przykład:

emulator @Pixel8_API_34 -noaudio
-nocache
-no-cache

Uruchamia emulator bez partycji pamięci podręcznej. Jeśli nie użyjesz tej opcji, domyślnie zostanie utworzony plik tymczasowy o nazwie cache.img. Ta opcja jest przeznaczona tylko dla deweloperów platform. Więcej informacji znajdziesz w artykule Katalog danych AVD.

Na przykład:

emulator @Pixel8_API_34 -nocache
-no-snapshot

Blokuje automatyczne wczytywanie i zapisywanie, co powoduje, że emulator wykonuje pełną sekwencję uruchamiania i traci stan po zamknięciu. Zastępuje opcję -snapshot.

Na przykład:

emulator @Pixel8_API_34 -no-snapshot
-no-snapshot-load

Uniemożliwia emulatorowi wczytywanie stanu AVD z pamięci zrzutów. Przeprowadza pełne uruchomienie.

Na przykład:

emulator @Pixel8_API_34 -no-snapshot-load
-no-snapshot-save

Uniemożliwia zapisywanie stanu AVD w pamięci zrzutów po zamknięciu emulatora, co oznacza, że wszystkie zmiany zostaną utracone.

Na przykład:

emulator @Pixel8_API_34 -no-snapshot-save
-no-snapshot-update-time

Nie próbuje od razu korygować czasu zegara AVD po przywróceniu migawki. Ta opcja może być przydatna podczas testowania, ponieważ pozwala uniknąć nagłego przeskoku w czasie. Aktualizacje czasu są nadal wysyłane do AVD co około 15 sekund.

Na przykład:

emulator @Pixel8_API_34 -no-snapshot-update-time
-no-snapstorage

Uruchamia emulator bez montowania pliku do przechowywania lub wczytywania zrzutów stanu, co wymusza pełne uruchomienie i wyłącza funkcję zrzutów stanu. Ta opcja zastępuje opcje -snapstorage-snapshot.

Na przykład:

emulator @Pixel8_API_34 -no-snapstorage
-no-window

Wyłącza wyświetlanie okien graficznych w emulatorze. Ta opcja jest przydatna, gdy emulator jest uruchamiany na serwerach bez wyświetlacza. Dostęp do emulatora możesz uzyskać za pomocą adb lub konsoli. Na przykład:

emulator @Pixel8_API_34 -no-window
-partition-size size

Określa rozmiar partycji danych systemowych w MB. Na przykład:

emulator @Pixel8_API_34 -partition-size 1024
-prop name=value

Ustawia właściwość systemu Android w emulatorze podczas jego uruchamiania. name musi być nazwą właściwości oznaczoną jako qemu_prop, która może mieć maksymalnie 32 znaki i nie może zawierać spacji, a value musi być ciągiem znaków o długości maksymalnie 92 znaków. Przykład znajdziesz w property_contextspliku. W jednym wierszu poleceń możesz określić kilka opcji ‑prop. Ta opcja może być przydatna podczas debugowania. Na przykład:

emulator @Pixel8_API_34 -prop qemu.name=value -prop qemu.abc=xyz
-qemu args Przekazuje argumenty do oprogramowania emulatora QEMU. Jeśli używasz tej opcji, upewnij się, że jest ona ostatnią określoną opcją, ponieważ wszystkie opcje po niej są interpretowane jako opcje specyficzne dla QEMU. Ta opcja jest dość zaawansowana i powinni z niej korzystać tylko deweloperzy, którzy bardzo dobrze znają QEMU i emulację Androida.
-qemu -h

Wyświetla pomoc dotyczącą -qemu. Na przykład:

emulator -qemu -h
-ramdisk filepath

Określa obraz rozruchowy ramdysku. Określa nazwę pliku i ścieżkę bezwzględną lub ścieżkę względną do katalogu roboczego.

Na przykład:

emulator @Pixel8_API_34 -ramdisk
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/ramdisk-test.img

Jeśli nie użyjesz tej opcji, domyślnie używany będzie plik ramdisk.img w katalogu systemowym. Więcej informacji znajdziesz w artykule Katalog systemowy AVD.

-report-console socket

Zgłasza port konsoli zdalnej osobie trzeciej przed rozpoczęciem emulacji. Może być przydatne w przypadku skryptu testów automatycznych. socket musi używać jednego z tych formatów:

  • tcp:port[,server][,max=seconds][,ipv6]
  • unix:port[,server][,max=seconds][,ipv6]

Więcej informacji znajdziesz w sekcji Pomoc dotycząca konkretnych opcji, w której opisano używanie opcji -help-report-console.

-shell

Tworzy konsolę powłoki roota w bieżącym terminalu. Ta opcja różni się od polecenia adb shell w tych aspektach:

  • Tworzy powłokę root, która umożliwia modyfikowanie wielu części systemu.
  • Działa nawet wtedy, gdy adb daemon w emulowanym systemie jest uszkodzony.
  • Aby zatrzymać emulator zamiast powłoki, naciśnij Control+C (lub Command-C w systemie macOS).

Na przykład:

emulator @Pixel8_API_34 -shell
-snapshot name

Określa nazwę zrzutu w pliku pamięci zrzutów na potrzeby automatycznego uruchamiania i zapisywania.

Zamiast wykonywać pełną sekwencję uruchamiania, emulator może wznowić działanie ze zrzutu wcześniejszego stanu, co zwykle jest znacznie szybsze. Jeśli podasz tę opcję, emulator wczyta zrzut o tej nazwie z obrazu zrzutu i zapisze go z powrotem pod tą samą nazwą po zakończeniu działania.

Jeśli nie użyjesz tej opcji, domyślnie zostanie wykonana pełna sekwencja uruchamiania. Jeśli określony stan nie istnieje, emulator przeprowadzi pełną sekwencję uruchamiania i wykona operację zapisywania.

Informacje o określaniu pliku pamięci masowej migawki i pliku domyślnego znajdziesz w sekcji -snapstorage.

emulator @Pixel8_API_34 -snapshot snapshot2

Pamiętaj, że podczas wczytywania migawki wszystkie treści w systemie, dane użytkownika i obrazy na karcie SD zostaną zastąpione treściami, które były w nich zapisane w momencie tworzenia migawki. Jeśli nie zapiszesz tych informacji w innym migawce, wszystkie zmiany wprowadzone od tego czasu zostaną utracone.

Migawkę możesz też utworzyć w konsoli emulatora za pomocą poleceniaavd snapshot save name. Więcej informacji znajdziesz w artykule Wysyłanie poleceń do konsoli emulatora.

-snapshot-list

Wyświetla listę dostępnych zrzutów. To polecenie wyświetla tabelę zrzutów zapisanych w pliku pamięci zrzutów, z którego emulator został uruchomiony, a następnie kończy działanie. Jeśli określisz też -snapstorage file, to polecenie wydrukuje tabelę z migawkami przechowywanymi w pliku.

Na przykład:

emulator @Pixel8_API_34 -snapshot-list -snapstorage
   ~/.android/avd/Pixel8_API_34.avd/snapshots-test.img

Wartości kolumn ID i TAG w danych wyjściowych możesz wykorzystać jako argumenty opcji -snapshot.

-snapstorage filepath

Określa plik repozytorium zawierający wszystkie zrzuty stanu. Wszystkie migawki wykonane podczas wykonywania są zapisywane w tym pliku. Podczas działania emulatora można przywrócić tylko zrzuty w tym pliku.

Na przykład:

emulator @Pixel8_API_34 -snapstorage
   ~/.android/avd/Pixel8_API_34.avd/snapshots-test.img

Jeśli nie określisz tej opcji, domyślnie będzie to snapshots.img w katalogu danych. Jeśli określony plik nie istnieje, emulator uruchomi się, ale bez możliwości zapisywania ani wczytywania zrzutów stanu.

-sysdir dir

Określa katalog systemowy za pomocą ścieżki bezwzględnej. Więcej informacji znajdziesz w artykule Katalog systemowy AVD. Na przykład:

emulator @Pixel8_API_34 -sysdir
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/test
-system filepath

Określa początkowy plik systemowy. Zawiera nazwę pliku i ścieżkę bezwzględną lub ścieżkę względną do katalogu roboczego.

Na przykład:

emulator @Pixel8_API_34 -system
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/system-test.img

Jeśli nie użyjesz tej opcji, domyślnie używany będzie plik system.img w katalogu systemowym. Więcej informacji znajdziesz w artykule Katalog systemowy AVD.

-writable-system

Użyj tej opcji, aby mieć obraz systemu z możliwością zapisu podczas sesji emulacji. Aby to zrobić:

  1. Uruchom wirtualne urządzenie za pomocą opcji -writable-system.
  2. Wpisz polecenie adb remount w terminalu, aby poinformować emulator o ponownym zamontowaniu system/ w trybie odczytu/zapisu. Domyślnie jest on montowany jako tylko do odczytu.

Użycie tej flagi powoduje utworzenie tymczasowej kopii obrazu systemu, która może być bardzo duża (nawet kilkaset MB), ale zostanie usunięta po zamknięciu emulatora.

Wycofane opcje

Te opcje wiersza poleceń nie są już używane:

  • -audio-in
  • -audio-out
  • -charmap
  • -code-profile
  • -cpu-delay
  • -dpi-device
  • -dynamic_skin
  • -enable-kvm
  • -gps
  • -image
  • -keyset
  • -help-keys
  • -help-keyset-file
  • -nand-limits
  • -noskin
  • -no-skin
  • -onion
  • -onion-alpha
  • -onion-rotation
  • -radio
  • -ranchu
  • -raw-keys
  • -scale
  • -shared-net-id
  • -shell-serial
  • -skin
  • -skindir
  • -trace
  • -useaudio

Pomoc dotycząca opcji wiersza poleceń

Z tej sekcji dowiesz się, jak uzyskać pomoc dotyczącą opcji wiersza poleceń. Zawiera bardziej szczegółowe informacje o najczęściej używanych opcjach wiersza poleceń emulatora, które są dostępne podczas uruchamiania emulatora.

Wyświetlanie listy wszystkich opcji emulatora

Aby wydrukować listę wszystkich opcji emulatora wraz z krótkim opisem, wpisz to polecenie:

emulator -help

Uzyskiwanie szczegółowej pomocy dotyczącej konkretnej opcji

Aby wydrukować pomoc dotyczącą konkretnej opcji uruchamiania, wpisz to polecenie:

emulator -help-option

Na przykład:

emulator -help-netspeed

Ta pomoc jest bardziej szczegółowa niż opis podany w opcji-help.

Szczegółowa pomoc dotycząca wszystkich opcji

Aby uzyskać szczegółową pomoc dotyczącą wszystkich opcji emulatora, wpisz to polecenie:

emulator -help-all

Wyświetlanie listy zmiennych środowiskowych emulatora

Aby uzyskać listę zmiennych środowiskowych emulatora, wpisz to polecenie:

emulator -help-environment

Zmienne środowiskowe możesz ustawić w oknie terminala przed uruchomieniem urządzenia wirtualnego lub w ustawieniach użytkownika w systemie operacyjnym. Możesz na przykład ustawić go w pliku .bashrc w systemie Linux.

Wyświetlanie listy tagów debugowania

Aby wydrukować listę tagów dla opcji -debug, wpisz to polecenie:

emulator -help-debug-tags

Opcje -debug umożliwiają włączanie i wyłączanie komunikatów debugowania z określonych komponentów emulatora, zgodnie z tagami.