Wie starte ich den Android-Emulator über die Befehlszeile?


372

Ich bin auf einem Mac und arbeite an der Android-Entwicklung vom Terminal aus. Ich habe das HelloWorld- Projekt erfolgreich erstellt und versuche nun, es über die Befehlszeile im Android-Emulator auszuführen. Welcher Befehl führt den Emulator für mein HelloWorld-Projekt aus?

Ich habe bereits die Android-Tools und Plattform-Tools in meinem PATH.

Bearbeiten:

Wie kann ich den Emulator anweisen, mein HelloWorld-Projekt über die Befehlszeile auszuführen? Ich habe das Projekt bereits mit ant gebaut.


Relevante Dokumente: Erstellen mit avdmanagerund Starten mit emulator.
Jchook

Antworten:


380

Ich gehe davon aus, dass Sie Ihr Projekt erstellt haben und es nur starten müssen, aber keine AVDs erstellt haben und für alle Aktionen die Befehlszeile verwenden müssen. Sie müssen Folgendes tun.

  1. Erstellen Sie ein neues virtuelles Gerät (AVD) für die Plattform, die Sie benötigen. Wenn Sie zum Erstellen Ihrer AVD die Befehlszeile verwenden müssen, können Sie aufrufen, android create avd -n <name> -t <targetID>wo targetID die API-Ebene ist, die Sie benötigen. Wenn Sie die GUI verwenden können, geben Sie einfach ein android avdund der Manager wird gestartet, wo Sie dasselbe tun können. Weitere Informationen zur AVD-Verwaltung finden Sie über die grafische Benutzeroberfläche und die Befehlszeile .
  2. Führen Sie die AVD entweder mit dem Befehl emulator -avd <name>oder über die zuvor gestartete GUI aus. Warten Sie, bis der Emulator vollständig geladen ist. Dies dauert einige Zeit. Sie können darüber lesen , hier zusätzliche Optionen .
  3. Jetzt müssen Sie die Anwendung auf Ihrer AVD installieren. Normalerweise verwenden Sie während der Entwicklung nur dasselbe Ant-Skript, mit dem Sie das Projekt erstellt haben. Wählen Sie einfach das installZiel aus. Sie können die Anwendung jedoch manuell mit dem Befehl installieren adb install <path-to-your-APK>.
  4. Wechseln Sie nun zum Emulator und starten Sie Ihre Anwendung wie auf jedem normalen Gerät über den Launcher. Alternativ können Sie den folgenden Befehl verwenden : adb shell am start -a android.intent.action.MAIN -n <package>/<activity class>. Zum Beispiel : adb shell am start -a android.intent.action.MAIN -n org.sample.helloworld/org.sample.helloworld.HelloWorld. Wie ein Kommentator vorgeschlagen hat, können Sie org.sample.helloworld.HelloWorldin der obigen Zeile auch durch just ersetzen .HelloWorld, und es wird auch funktionieren.

1
Ihre 4-Punkte-Liste ist das, wonach ich suche. Wenn ich renne adb install <path-to-your-APK>, bekomme ich error: device not found. Wenn ich den Emulator in einer Shell und den Befehl adb install in einer anderen ausführe, erhalte ich error: device offline. Wie stelle ich ein emuliertes virtuelles Gerät ein?
Thierry Lam

3
OK, brachte Informationen aus der vorherigen Version der Antwort zurück. :) Wenn Sie die Meldung erhalten, dass das Gerät offline ist, haben Sie das System wahrscheinlich nicht geladen. Es ist sinnlos, Befehle an den Emulator zu senden, wenn das Android-Logo angezeigt wird. Sie müssen warten, bis der Sperrbildschirm angezeigt wird. Und Sie haben Recht, dass Sie eine andere Shell-Instanz verwenden müssen, um Befehle an Ihr Gerät zu senden. Übrigens können Sie den aktuellen Status der Geräte mit dem adb devicesBefehl überprüfen .
Malcolm

1
@ThomasW Danke, ich habe diese Info zur Antwort hinzugefügt.
Malcolm

1
@ L2G Wenn Sie dies als Skript ausführen, können Sie dies tun. Als ich die Antwort schrieb, ging ich davon aus, dass Sie alles von Hand machen. In diesem Fall können Sie natürlich selbst warten.
Malcolm

4
adb kill-server; adb start-serveradb devices
Starten Sie den AdB

278

Listen Sie alle Ihre Emulatoren auf:

emulator -list-avds

Führen Sie einen der aufgelisteten Emulatoren mit dem -avdFlag aus:

emulator -avd @name-of-your-emulator

wo emulatorist unter:

${ANDROID_SDK}/tools/emulator

2
Wenn Sie von einem Linux-Terminal aus ausführen, müssen Sie cdin den Ordner $ ANDROID_SDK / tools wechseln, sonst funktioniert es nicht.
Shimatai

4
Vielen Dank! Wenn Sie emulatorhäufiger verwenden, erstellen Sie einen Alias: nano ~/.bashrc> Hinzufügen alias emulator='$ANDROID_HOME/tools/emulator', Speichern . ~/bashrcund fertig. (Ersetzen Sie ANDROID_HOMEdurch die richtige verwendete Variable oder den statischen Pfad zum Android-Ordner).
Samuel Elh

3
Wenn der folgende Fehler ausgelöst wird: FEHLER: ./ android / qt / qt_setup.cpp: 28: Qt-Bibliothek nicht gefunden unter ../emulator/lib64/qt/lib. Das Starten des Emulators von $ ANDROID_HOME / tools ist eine Problemumgehung. github.com/decosoftware/deco-ide/issues/289
tebanep

Wenn Sie wirklich nicht zum toolsOrdner navigieren, funktioniert dies nicht. Ich habe einen Fehler bekommen PANIC: Missing emulator engine program for 'x86' CPU.. (Ich bin unter Linux, OpenSUSE.) Nachdem ich zu navigiert toolsund dann einfach ausgeführt habe, emulator -avd "{name}"hat es funktioniert.
Pesho Hristov

100

Ich denke, der beste Weg, um es über das Terminal zu erreichen, ist:

cd ~/Library/Android/sdk/tools

So führen Sie eine bestimmte AVD direkt aus:

./emulator -avd {AVD_NAME}

Um Ihre AVDs aufzulisten, verwenden Sie:

./emulator -list-avds

Was ist der Pfad für Windows?
qwertzguy

9
Ah fand es: C: \ Benutzer \ <Benutzer> \ AppData \ Local \ Android \ sdk \ Emulator
qwertzguy

1
Nur eine, die für mich funktioniert hat, danke - aber es gibt sie trotzdem, um sie zu deinem Pfad hinzuzufügen, oder jedes Mal, wenn sie dort cd'ing, ist ein bisschen mühsam
John D

Was @JohnD gesagt hat - wie würde ich ./als Teil des emulatorBefehls in einen Pfad / Alias ​​aufnehmen?
DaveNOTDavid

Unter Linux ist der Weg für mich ~/Android/Sdk/emulator.
Tyler Collier

26

Nur hier hinzuzufügen, wenn Sie "Fehler: Gerät offline" erhalten, bedeutet dies, dass die Verbindung mit dem Emulator und der ADB-Brücke aufgrund der beim Starten des Emulators benötigten Zeit unterbrochen wurde.

Anstatt den Emulator an dieser Stelle neu zu starten, versuchen Sie unten zwei Befehle, die die adb-Brücke stoppen und erneut starten.

adb kill-server

ADB-Startserver


Unter Windows müssen Sie möglicherweise auch die Aufgabe adb.exe mit dem Task-Manager beenden.
Carl

25

Hier können Sie die Optionen zum Ausführen dieses Befehls über die Befehlszeile überprüfen:

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

Zum Beispiel benutze ich es wie folgt:

emulator -avd ICS_ARM -wipe-data -no-boot-anim -cpu-delay 0

Hallo Germangti, ich habe das gleiche Problem. Ich erhalte die Meldung "Gültige ABIs: Keine ABIs. Fehler: Ungültig --abi x86 für das ausgewählte Ziel.". Wie haben Sie das Problem behoben?
Muneer Muhammed

15

CMD öffnen

  1. Öffnen Sie die Eingabeaufforderung
  2. Geben Sie in meinem Fall den Pfad des Emulators ein

C: \ adt-bundle-windows-x86_64-20140702 \ sdk \ tools Geben Sie hier die Bildbeschreibung ein

  1. schreibe in meinem Fall "emulator -avd emulatorname"

Emulator -avd AdilVD

Geben Sie hier die Bildbeschreibung ein


13

Wenn Sie ausschließlich versuchen, den Emulator über die Befehlszeile auszuführen, versuchen Sie dies unter OSX.

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

Sie können es vereinfachen, indem Sie dem .bash_profile einen Alias ​​hinzufügen und an einen Hintergrundjob senden.

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

Informieren Sie Bash über die Änderungen.

source ~/.bash_profile

zsh: keine solche Datei oder Verzeichnis: NAMEOFDEVICE
Ben Sinclair

2
@Andy sollst du durch NAMEOFDEVICEden tatsächlichen Namen des Emulators ersetzen . emulator -list-avdsFühren Sie a aus , um eine Liste der AVDs zu erhalten, die Sie in Ihrem System haben.
Nabn

9

Öffnen Sie die Eingabeaufforderung und gehen Sie zu <android-Home>\sdk\tools>emulator -avd <AVD_NAME>

Hier "emulator"ist der Befehl zum Öffnen Ihres virtuellen Android-Geräts .


9

Wenn Sie Git Bash haben, können Sie Ihren Emulator mit einem Doppelklick öffnen, mit einigen anfänglichen Einstellungen (nur in Windows 10 getestet) :

  1. Öffnen Sie Git Bash.
  2. Lauf cd ~/AppData/Local/Android/sdk/emulator
  3. Führen Sie ./emulator -list-avdsund halten Sie Kenntnis des Namens des Emulators. MY_EMULATORzum Beispiel.
  4. Öffnen Sie den Editor und fügen Sie diese beiden Zeilen hinzu (geben Sie stattdessen den Namen Ihres Emulators ein MY_EMULATOR):

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

  5. Speichern Sie die Datei an einem geeigneten Ort als myfile. sh . Sie können "myfile" nach Ihren Wünschen ändern, aber die Erweiterung .sh wird benötigt.

  6. Öffnen Sie Git Bash in dem Verzeichnis, in dem Sie myfile.sh gespeichert haben, und führen Sie es aus chmod +x myfile.sh. Denken Sie daran, den Namen Ihrer Datei anstelle von myfile einzugeben .

Und das ist es! Von nun an, jedes Mal, wenn Sie diesen Emulator starten müssen, suchen Sie einfach Ihre myfile.sh und doppelklicken Sie darauf und warten Sie, bis Ihr Android-Emulator gestartet ist!


5

(Linux) In Ihrem Terminal Kopieren & Einfügen und Ändern der drei Felder in Blau

/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)

Sie können die Emulatoren in Ihrem Ordner anzeigen. home cd /home/Youuser/.android/avd/


5

Der android create avdBefehl ist veraltet. Es wird jetzt empfohlen, avdmanagerstattdessen Emulatoren über die Befehlszeile zu starten.

Erstellen Sie zunächst einen neuen Emulator, falls noch keiner vorhanden ist:

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

Dies setzt voraus, dass Sie bereits ein X86-Systemabbild installiert haben, das mit API 26 übereinstimmt, und dass die Google-APIs installiert sind.

Sie können den Emulator dann mit starten emulator @MyEmulator.


4

Heutzutage, vorausgesetzt, Sie haben Android Studio (2.2) in meinem Fall installiert und nur 1 Emulator, könnten Sie diesen einen Liner verwenden

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

Wenn Sie dies häufig tun, machen Sie es einfacher:

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

Fügen Sie einen Alias ​​hinzu ~.aliases

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

Erinnern Sie sich an, source ~/.profile ~/.aliasesbevor Sie es testen

Nächstes Mal nur $ androidup


3

Liste der verfügbaren Avd-Namen auf

.android / avd

/ SDK_PATH / tools / emulator -netdelay keine -netspeed full -avd "AVD_NAME"


3

In Windows verwende ich dieses PowerShell-Skript, um es zu starten.

$em = $env:USERPROFILE+"\AppData\Local\Android\sdk\tools\emulator.exe"; 
Start-Process $em " -avd Nexus_5X_API_24" -WindowStyle Hidden;

3
  1. Öffnen Sie CMD
  2. So rufen Sie alle Emulatorlisten ab (C: \ Benutzer \ DJango \ AppData \ Local \ Android \ sdk \ emulator> Emulator -list-avds)
  3. Wählen Sie einen beliebigen Emulator aus (C: \ Users \ DJango \ AppData \ Local \ Android \ sdk \ emulator> Emulator -avd Pixel_2_API_28).

1

Unter Mac (und Linux, glaube ich) können Sie nach dem Erstellen Ihrer AVD einen Alias ​​erstellen: alias run-android='~/Library/Android/sdk/tools/emulator -avd ${YOUR_AVD_NAME} &'

Hinweis : Durch die Ausführung des Alias ​​wird Ihr Terminal nicht gesperrt. Wenn Sie dies möchten, entfernen Sie einfach das letzte '&' .

Wenn Sie emulatores selbst ausführen, erhalten Sie einen Fehler, da er erwartet, dass Sie an Ihrer aktuellen Position: /emulator/qemu/${YOUR_PATFORM}/qemu-system-x86_64'den Emulator starten müssen.


1

Ich habe dieses einfache Shell-Skript mit Zenity geschrieben, mit dem Sie auswählen können, welche AVD Sie ausführen möchten. Wenn Sie ANDROID_HOME nicht definiert haben, können Sie dies einfach durch den vollständigen Pfad zum Emulator ersetzen. Dies wäre auch mit select anstelle von Zenity einfach zu tun, aber ich habe mich für Zenity entschieden, da ich es über das xfce-Anwendungsmenü (obwohl eine .desktop-Datei) ausführe.

#!/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

1

Führen Sie den ersten verfügbaren Emulator aus:

~/Library/Android/sdk/tools/emulator -avd `~/Library/Android/sdk/tools/emulator -list-avds | awk '{print $1}'`

Ich mache etwas ähnliches:~/Library/Android/sdk/tools/emulator -avd $(~/Library/Android/sdk/tools/emulator -list-avds | head -1)
Kamen Tsvetkov

0

Starten des Emulators über die Befehlszeile mit DNS-Hilfe

Speicherort des Emulatorprogramms: / Users / {{UserName}} / Library / Android / sdk / tools

  1. Überprüfen Sie die vorhandenen avd: - Emulator -list-avds

  2. Starten Sie den Emulator mit dem DNS-Set / Users / {{UserName}} / Library / Android / sdk / tools / emulator -avd Pixel_API_26 -dns-server 8.8.8.8


0

Siehe folgende Anweisungen für Ubuntu Linux mit zsh :

  1. Terminalfenster öffnen ( CTRL+ ALT+ T)
  2. Führen Sie den Befehl aus nano ~/.zshrc, um Ihr Profil zu bearbeiten
  3. Fügen Sie der geöffneten Datei folgende Zeilen hinzu:
export ANDROID_SDK_HOME="~/Android/Sdk"
alias emulator="$ANDROID_SDK_HOME/emulator/emulator"
  1. Speichern Sie die Datei ( CTRL+ O, CTRL+ X)
  2. Geben Sie das Profil ein, indem Sie den Befehl ausführen, source ~/.zshrc oder melden Sie sich einfach ab und wieder an
  3. Testen Sie, indem Sie den Befehl emulator -helpim Terminal ausführen

HINWEIS : Sollte bashdurch Ersetzen .zshrcdurch gleich sein.bashrc


0

Ich bin spät dran, aber ich möchte teilen, vielleicht hilft es jemandem und mir auch, wenn es später jemals gebraucht wird :) Im Folgenden finden Sie die Möglichkeit, den Emulator über die Befehlszeile mit einem Befehl mithilfe eines Bash-Skripts zu öffnen. Ich verwende MX Linux, aber der Prozess ist auf allen Betriebssystemen gleich

1- Überprüfen Sie zuerst die installierten Emulatoren

emulator -list-avds

es wird wie unten resultieren

emulator -list-avds
Nexus_4_API_28
Pixel_2_API_28

2- Öffnen Sie einen beliebigen Text- oder Code-Editor, erstellen Sie eine neue Datei und schreiben Sie wie folgt

#!/bin/sh
emulator -avd Nexus_4_API_28

Nexus_4_API_28 ist der Emulator, den ich öffnen möchte. Sie schreiben Ihren, den Sie vom ersten Schritt an erhalten haben

Speichern Sie diese Datei mit der Erweiterung .sh

3- Ändern Sie dann die Berechtigungen für die Datei, um sie ausführbar zu machen:

chmod u+x emu.sh

4- Öffnen Sie nun den Emulator, der gerade diese Bash-Skriptdatei mit dem folgenden Befehl ausführt

./emu.sh

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.