Jak uruchomić emulator Androida z wiersza poleceń?

372

Jestem na komputerze Mac, pracuję nad opracowywaniem Androida z terminala. Pomyślnie utworzyłem projekt HelloWorld i teraz próbuję uruchomić go z wiersza polecenia w emulatorze Androida. Które polecenie uruchamia emulator mojego projektu HelloWorld?

Mam już narzędzia Android i narzędzia platformy w mojej ŚCIEŻCE.

Edytować:

Jak powiedzieć emulatorowi, aby uruchomił mój projekt HelloWorld z wiersza poleceń? Zbudowałem już projekt z mrówką.

Thierry Lam
źródło
Odpowiednie dokumenty: twórz avdmanageri uruchamiaj za pomocą emulator.
jchook

Odpowiedzi:

380

Zakładam, że zbudowałeś projekt i po prostu musisz go uruchomić, ale nie masz żadnych utworzonych AVD i musisz używać wiersza poleceń do wszystkich akcji. Musisz wykonać następujące czynności.

  1. Utwórz nowe urządzenie wirtualne (AVD) dla potrzebnej platformy. Jeśli musisz użyć wiersza polecenia do utworzenia AVD, możesz zadzwonić android create avd -n <name> -t <targetID>tam, gdzie targetID jest poziomem API, którego potrzebujesz. Jeśli możesz użyć GUI, po prostu wpisz, android avda uruchomi się menedżer, w którym możesz zrobić to samo. Możesz przeczytać więcej o zarządzaniu AVD za pomocą GUI i wiersza poleceń .
  2. Uruchom AVD za pomocą polecenia emulator -avd <name>lub za pomocą wcześniej uruchomionego GUI. Poczekaj, aż emulator w pełni się załaduje, zajmuje to trochę czasu. Możesz przeczytać o dodatkowych opcjach tutaj .
  3. Teraz musisz zainstalować aplikację na AVD. Zwykle podczas programowania używasz tego samego skryptu Ant, którego użyłeś do zbudowania projektu, po prostu wybierz installcel. Możesz jednak zainstalować aplikację ręcznie za pomocą polecenia adb install <path-to-your-APK>.
  4. Teraz przełącz się na emulator i uruchom aplikację, tak jak na dowolnym normalnym urządzeniu, za pomocą programu uruchamiającego. Lub, alternatywnie, można użyć następującego polecenia: adb shell am start -a android.intent.action.MAIN -n <package>/<activity class>. Na przykład: adb shell am start -a android.intent.action.MAIN -n org.sample.helloworld/org.sample.helloworld.HelloWorld. Jak sugerował komentator, możesz również zamienić org.sample.helloworld.HelloWorldw powyższym wierszu na just .HelloWorld, i to też będzie działać.
Malcolm
źródło
1
Twoja lista 4 punktów jest tym, czego szukam. Kiedy biegnę adb install <path-to-your-APK>, rozumiem error: device not found. Jeśli uruchomię emulator w jednej powłoce, a komendę adb install w innej, otrzymam error: device offline. Jak ustawić emulowane urządzenie wirtualne?
Thierry Lam
3
OK, przywróciłem informacje z poprzedniej wersji odpowiedzi. :) Jeśli pojawi się komunikat, że urządzenie jest w trybie offline, myślę, że po prostu nie pozwoliłeś systemowi się załadować. Nie ma sensu wysyłać poleceń do emulatora, gdy pokazuje logo Androida, musisz poczekać, aż pojawi się ekran blokady. I masz rację, że musisz użyć innej instancji powłoki, aby wysłać polecenia do urządzenia. Nawiasem mówiąc, możesz sprawdzić bieżący stan urządzeń za pomocą adb devicespolecenia.
Malcolm,
1
@ThomasW Dzięki, dodałem te informacje do odpowiedzi.
Malcolm
1
@ L2G Jeśli uruchomisz to jako skrypt, to tak, możesz to zrobić. Kiedy napisałem odpowiedź, założyłem, że robisz wszystko ręcznie, w takim przypadku oczywiście możesz poczekać.
Malcolm,
4
zrestartuj serwer adb przez: adb kill-server; adb start-serverjeśli nic się nie pojawiadb devices
evandrix
278

Wymień wszystkie emulatory:

emulator -list-avds

Uruchom jeden z wymienionych emulatorów z -avdflagą:

emulator -avd @name-of-your-emulator

gdzie emulatorjest pod:

${ANDROID_SDK}/tools/emulator
azibi
źródło
2
Jeśli uruchamiasz z terminala Linux, musisz przejść cddo folderu $ ANDROID_SDK / tools, w przeciwnym razie nie będzie działać.
shimatai
4
Dzięki! Jeśli używasz emulatorczęściej, dlaczego nie utworzyć aliasu: nano ~/.bashrc> dodaj alias emulator='$ANDROID_HOME/tools/emulator', zapisz . ~/bashrci gotowe. (zamień ANDROID_HOMEna używaną poprawną zmienną lub ścieżkę statyczną do folderu Androida).
Samuel Elh
3
Jeśli zgłoszony zostanie następujący błąd: BŁĄD: ./ android / qt / qt_setup.cpp: 28: Nie znaleziono biblioteki Qt w ../emulator/lib64/qt/lib, uruchomienie emulatora z $ ANDROID_HOME / tools to obejście. github.com/decosoftware/deco-ide/issues/289
tebanep
Jeśli tak naprawdę nie toolsprzejdziesz do folderu - to naprawdę nie zadziała. Mam błąd PANIC: Missing emulator engine program for 'x86' CPU.. (Jestem na Linuksie, OpenSUSE.) Po przejściu do, toolsa następnie po prostu uruchomiłem emulator -avd "{name}"- wtedy zadziałało.
pesho hristov
100

Myślę, że najlepszym sposobem na osiągnięcie tego przez terminal jest:

cd ~/Library/Android/sdk/tools

Aby bezpośrednio uruchomić określony system AVD:

./emulator -avd {AVD_NAME}

Aby wyświetlić listę AVD, użyj:

./emulator -list-avds
Ali Sao
źródło
Jaka jest ścieżka dla systemu Windows?
qwertzguy,
9
Ah znalazł to: C: \ Users \ <użytkownik> \ AppData \ Local \ Android \ sdk \ emulator
qwertzguy
1
tylko jeden, który dla mnie zadziałał, dzięki - ale czy i tak można go dodać do ścieżki urth lub bc cd cd tam za każdym razem jest trochę kłopotliwy
John D
Co powiedział @JohnD - jak dołączyć ./jako część emulatorpolecenia do ścieżki / aliasu?
DaveNOTDavid
W Linuksie ścieżka jest dla mnie ~/Android/Sdk/emulator.
Tyler Collier
26

Wystarczy dodać tutaj, gdy pojawi się komunikat „błąd: urządzenie offline” oznacza, że ​​połączenie z emulatorem i mostkiem adb zostało zerwane z powodu czasu potrzebnego na uruchomienie emulatora.

Zamiast ponownie uruchomić emulator w tym momencie, wypróbuj poniższe dwa polecenia, które zatrzymują się i ponownie uruchom mostek adb.

adb kill-server

adb start-server

ABDroids
źródło
W systemie Windows może być konieczne zabicie zadania adb.exe za pomocą Menedżera zadań.
Carl
25

Tutaj możesz sprawdzić opcje wykonania tego polecenia za pomocą wiersza poleceń:

emulator -avd avd_name [-option [value]] ... [-qemu args]

Na przykład używam go w następujący sposób:

emulator -avd ICS_ARM -wipe-data -no-boot-anim -cpu-delay 0
germangti
źródło
Cześć Germangti, Mam ten sam problem. Otrzymuję komunikat „Prawidłowe ABI: brak ABI. Błąd: Nieprawidłowe --abi x86 dla wybranego celu.”. Jak rozwiązałeś problem?
Muneer Muhammed,
15

otwórz CMD

  1. Otwórz wiersz polecenia
  2. wpisz ścieżkę emulatora w moim przypadku

C: \ adt-bundle-windows-x86_64-20140702 \ sdk \ tools wprowadź opis zdjęcia tutaj

  1. napisz „emulator -avd emulatorname” w moim przypadku

emulator -avd AdilVD

wprowadź opis zdjęcia tutaj

Adii
źródło
13

Jeśli próbujesz uruchomić emulator z wiersza poleceń, wypróbuj to w OSX.

"/Applications/Android Studio.app/sdk/tools/emulator" -avd <NAMEOFDEVICE> -netspeed full -netdelay none

Możesz to uprościć, dodając alias do pliku .bash_profile i wysyłając go do zadania w tle.

alias android='/Applications/Android\ Studio.app/sdk/tools/emulator <NAMEOFDEVICE> -netspeed full -netdelay none &'

Poinformuj Bash o zmianach.

source ~/.bash_profile
Stóg
źródło
zsh: brak takiego pliku lub katalogu: NAMEOFDEVICE
Ben Sinclair
2
@ I należy zastąpić NAMEOFDEVICErzeczywistą nazwą emulatora. zrób, emulator -list-avdsaby uzyskać listę avds, które masz w systemie.
nabn
9

Otwórz wiersz polecenia i przejdź do <android-Home>\sdk\tools>emulator -avd <AVD_NAME>

Oto "emulator"polecenie użyte do otwarcia urządzenia wirtualnego z Androidem .

Chandra Shekhar
źródło
9

Jeśli masz Git Bash, możesz otworzyć emulator podwójnym kliknięciem, z pewną wstępną konfiguracją (testowane tylko w Windows 10) :

  1. Otwórz Git Bash.
  2. Biegać cd ~/AppData/Local/Android/sdk/emulator
  3. Uruchom ./emulator -list-avdsi zanotuj nazwę emulatora. MY_EMULATORna przykład.
  4. Otwórz Notatnik i dodaj te dwa wiersze (zamiast tego wstaw nazwę emulatora MY_EMULATOR):

    cd ~/AppData/Local/Android/sdk/emulator; ./emulator -avd MY_EMULATOR

  5. Zapisz plik w dogodnym miejscu jako mój plik. sh . Możesz zmienić „mój plik”, który najbardziej Ci odpowiada, ale konieczne jest rozszerzenie .sh .

  6. Otwórz Git Bash w katalogu, w którym zapisałeś myfile.sh i uruchom chmod +x myfile.sh. Pamiętaj, aby umieścić nazwę pliku zamiast mojego pliku .

I to wszystko! Odtąd za każdym razem, gdy musisz uruchomić ten emulator, po prostu znajdź plik myfile.sh i kliknij go dwukrotnie i poczekaj na uruchomienie emulatora Androida!

romin21
źródło
5

(Linux) W twoim terminalu Kopiuj i wklej i zmieniając trzy pola na niebiesko

/home/YouUser/Folder/adt-bundle-linux-x86_64-20140702/sdk/tools/emulator64-x86 -avd Android5.1.1

YouUser = user of session in linux
Folder = path of folfer
Android5.1.1 = You version of android in the emulator,for example (Android4.4.2)

możesz wyświetlić emulatory w swoim katalogu domowym cd /home/Youuser/.android/avd/

David Hackro
źródło
5

android create avdKomenda jest przestarzała. Teraz zaleca się używaćavdmanager zamiast tego do uruchamiania emulatorów z wiersza poleceń.

Najpierw utwórz nowy emulator, jeśli jeszcze nie istnieje:

avdmanager create avd --name "MyEmulator" -k "system-images;android-
26;google_apis;x86"

Zakłada się, że masz już zainstalowany obraz systemu X86, który pasuje do API 26 i ma zainstalowane interfejsy API Google.

Następnie możesz uruchomić emulator za pomocą emulator @MyEmulator.

klucz fraktalny
źródło
4

Obecnie zakładając, że masz zainstalowany Android Studio (2.2) w moim przypadku i tylko 1 emulator, możesz użyć tego jednego linera

export ANDROID_SDK_ROOT=~/Library/Android/sdk/ && emulator '@'`emulator -list-avds`

Jeśli robisz to często, ułatw to:

$ echo 'export ANDROID_SDK_ROOT=~/Library/Android/sdk/' >> ~/.profile

Dodaj alias do ~.aliases

alias androidup="emulator '@'`emulator -list-avds`" 

Przypomnij sobie source ~/.profile ~/.aliasesprzed przetestowaniem

Tylko następnym razem $ androidup

Jaime Agudo
źródło
3

lista nazw avd dostępnych na

.android / avd

/ SDK_PATH / tools / emulator -netdelay none -netspeed full -avd „AVD_NAME”

Rinkesh
źródło
3

W systemie Windows używam tego skryptu PowerShell, aby go uruchomić.

$em = $env:USERPROFILE+"\AppData\Local\Android\sdk\tools\emulator.exe"; 
Start-Process $em " -avd Nexus_5X_API_24" -WindowStyle Hidden;
Andy Li
źródło
3
  1. Otwórz CMD
  2. Aby uzyskać całą listę emulatorów (C: \ Users \ DJango \ AppData \ Local \ Android \ sdk \ emulator> emulator -list-avds)
  3. Wybierz dowolny emulator (C: \ Users \ DJango \ AppData \ Local \ Android \ sdk \ emulator> emulator -avd Pixel_2_API_28)
Arman Javed
źródło
1

Na komputerze Mac (i Linux), po utworzeniu AVD, możesz utworzyć alias: alias run-android='~/Library/Android/sdk/tools/emulator -avd ${YOUR_AVD_NAME} &'

Uwaga : wykonanie aliasu nie zablokuje twojego terminala, jeśli chcesz, po prostu usuń ostatnie „&” .

Uruchom emulatorgo sam, da ci błąd, ponieważ spodziewa się, że w twojej obecnej pozycji musisz: /emulator/qemu/${YOUR_PATFORM}/qemu-system-x86_64'uruchomić emulator.

Ariel Jiménez
źródło
1

Napisałem ten prosty skrypt powłoki przy użyciu Zenity, który pozwala wybrać AVD, który chcesz uruchomić. Jeśli nie masz zdefiniowanego ANDROID_HOME, możesz po prostu zastąpić go pełną ścieżką do emulatora. Byłoby to również łatwe w przypadku select zamiast Zenity, ale zdecydowałem się na Zenity, ponieważ uruchamiam go z menu aplikacji xfce (chociaż plik .desktop).

#!/bin/sh

opt=$(zenity --title="Choose AVD" --text="Choose which emulator to start" --list \
                   --column="Devices" --separator="\n" `$ANDROID_HOME/emulator/emulator -list-avds`);

$ANDROID_HOME/emulator/emulator -avd $opt
Pauli Kettunen
źródło
1

Uruchom pierwszy dostępny emulator:

~/Library/Android/sdk/tools/emulator -avd `~/Library/Android/sdk/tools/emulator -list-avds | awk '{print $1}'`
Shl
źródło
Robię coś podobnego:~/Library/Android/sdk/tools/emulator -avd $(~/Library/Android/sdk/tools/emulator -list-avds | head -1)
Kamen Tsvetkov
0

Uruchamianie emulatora z wiersza poleceń z pomocą dns

Lokalizacja programu emulatora: / Users / {{UserName}} / Library / Android / sdk / tools

  1. Sprawdź istniejące avd: - emulator -list-avds

  2. Uruchom emulator za pomocą zestawu dns / Users / {{UserName}} / Library / Android / sdk / tools / emulator -avd Pixel_API_26 -dns-server 8.8.8.8

Dayanand
źródło
0

Zobacz poniższe instrukcje dla Ubuntu Linux z zsh :

  1. Otwórz okno terminala ( CTRL+ ALT+ T)
  2. Uruchom polecenie nano ~/.zshrc aby edytować swój profil
  3. Dodaj następujące wiersze w otwartym pliku:
export ANDROID_SDK_HOME="~/Android/Sdk"
alias emulator="$ANDROID_SDK_HOME/emulator/emulator"
  1. Zapisz plik ( CTRL+ O, CTRL+X )
  2. Źródło profilu, uruchamiając polecenie source ~/.zshrc lub po prostu wyloguj się i zaloguj się ponownie
  3. Przetestuj, uruchamiając polecenie emulator -helpw terminalu

UWAGA : Powinien być taki sam bash, zastępując .zshrcgo.bashrc

Saikat
źródło
0

Jestem spóźniony, tutaj, ale chcę się podzielić, więc może to pomóc komuś i mnie, gdy będzie to później potrzebne :), Więc poniżej jest sposób na otwarcie emulatora z wiersza poleceń za pomocą jednego polecenia za pomocą skryptu bash. Używam MX Linux, ale proces jest taki sam we wszystkich systemach operacyjnych

1- Najpierw sprawdź zainstalowane emulatory

emulator -list-avds

spowoduje to jak poniżej

emulator -list-avds
Nexus_4_API_28
Pixel_2_API_28

2 - otwórz dowolny edytor zwykłego tekstu lub kodu i utwórz nowy plik i napisz jak poniżej

#!/bin/sh
emulator -avd Nexus_4_API_28

Nexus_4_API_28 to emulator, który chcę otworzyć, napisz swój, który dostałeś od pierwszego kroku

zapisz ten plik z rozszerzeniem .sh

3- Następnie zmień uprawnienia do pliku, aby był wykonywalny:

chmod u+x emu.sh

4- Teraz otwórz emulator po prostu wykonując ten plik skryptu bash za pomocą następującego polecenia

./emu.sh

wprowadź opis zdjęcia tutaj

javeedishaq
źródło