Emulator kann in Android Studio nicht ausgeführt werden

96

Ich habe gerade Android Studio installiert und versucht, es für einen Testlauf zu verwenden. Wenn ich versuche, meine App auszuführen, wird die folgende Fehlermeldung angezeigt

emulator: ERROR: This AVD's configuration is missing a kernel file!!
emulator: ERROR: ANDROID_SDK_ROOT is undefined

Weiß jemand, wie man das behebt ????

Ted Pottel
quelle
1
Schauen Sie sich diese Antwort an stackoverflow.com/questions/9712605/…
Psypher
@ Ted Pottel, hat eine der folgenden Antworten Ihre Frage beantwortet? Wenn ja, klicken Sie bitte auf das Häkchen daneben.
Harris

Antworten:

27

Es ist möglich, dass Sie wirklich keine Systemabbilder haben. Überprüfen Sie, ob $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7avorhanden und nicht leer ist. Wenn sie wirklich fehlen, installieren / installieren Sie sie mit dem SDK-Manager.

tse
quelle
2
Ich habe zwei Probleme: 1: Ich kann nicht finden $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7a, 2: Wie man ein virtuelles Gerät mit SDK-Manager neu installiert
Musa Haidari
Wenn ich jedoch Ihre Antwort lese, kann ich eine Problemumgehung durchführen. Dabei wurde ein neues virtuelles Gerät erstellt, und das Problem trat bei dem neuen Gerät nicht auf
Musa Haidari,
4
Stellen Sie im SDK-Manager sicher, dass Sie die Option "Paketdetails anzeigen" aktivieren, damit Sie sehen können, welche Systemabbilder installiert sind. Wenn nicht, installieren Sie sie
Martyn Davis,
21

Gehen Sie zu Extras | Android | AVD Manager

Klicken Sie auf den Pfeil unter der Spalte Aktionen ganz rechts (wo sich eine Fehlermeldung befindet).

Wählen Sie Bearbeiten

Übernehmen Sie die Standardauswahl (für mich MNC x86 Android M)

Weiter klicken

Klicken Sie auf Fertig stellen

Es speichert Ihre AVD und der Fehler ist jetzt aus der letzten Spalte verschwunden. Und der Emulator funktioniert jetzt einwandfrei.

Harris
quelle
15

Habe das gerade behoben. Hoffe das hilft anderen. (Problem wie in Android Studio v2) Dieses Problem betrifft Armemulatoren. In diesem Beispiel verwende ich die armeabi-v7a API 16

Das Update besteht aus drei Schritten:

Schritt 1: Öffnen Sie den SDK-Manager und stellen Sie sicher, dass Sie ARM EABI v7a System Image installiert haben

Schritt 2. Dies ist der offensichtliche Fall des Hinzufügens der Position von sdk zu Systemvariablen.

Klicken Sie dann mit der rechten Maustaste auf das Symbol "Dieser PC" auf dem Desktop

Properties -> Advanced system settings -> Environment Variables... Fügen Sie dann den Pfad zu sdk als neu im Abschnitt Systemvariablen unter Verwendung des Variablennamens hinzu ANDROID_SDK_ROOT.

Schritt 3. Starten Sie Android Studio neu, damit Änderungen registriert werden. Nach der Behebung des ANDROID_SDK_ROOTundefinierten Problems kann der Emulator die Kerneldateien immer noch nicht finden, obwohl er sieht, dass der SDK-Manager sie installiert hat

path-to-sdk\sdk\system-images\android-16\default\armeabi-v7a\kernel-qemu

Der Grund ist eine Verwechslung zwischen dem Speicherort, an dem der SDK-Manager die Kernel-Datei installiert, und dem Speicherort, nach dem der Emulator sucht.

Wenn Sie Ihre config.ini (Android Studio -> AVD Mananger -> "Auf Festplatte anzeigen") für Ihren Emulator öffnen, wird die folgende Zeile angezeigt:

image.sysdir.1=add-ons\addon-google_apis-google-16\images\armeabi-v7a\

(dh \ path-to-sdk \ add-ons \ addon -....)

Anstatt diesen Wert in der Datei config.ini zu ändern, habe ich ihn kopiert

path-to-sdk\sdk\system-images\android-16\default\armeabi-v7a\kernel-qemu

(Kerneldatei aus dem Ordner SDK Manager installiert)

zu

\path-to-sdk\add-ons\addon-google_apis-google-16\images\armeabi-v7a\

Und das war die fehlende Kerneldatei. Sie können den Emulator ausführen. (Sie müssen das Android Studio schließen und erneut öffnen.) Geben Sie dem Emulator etwas Zeit, da er im Vergleich zu x86 zehnmal langsamer ist. (Meins dauerte ungefähr 5 Minuten, um zu starten)

Asi Mugrabi
quelle
Äh, wo ist die 'config.ini für deinen Emulator'?
Jay
Android Studio -> AVD Mananger -> "Auf Festplatte anzeigen". Antwort bearbeiten.
Asi Mugrabi
Dies ist die Antwort, die tatsächlich den Trick für mich getan hat, in meinem Fall war dies meine bearbeitete Zeile:image.sysdir.1=system-images\android-16\default\armeabi-v7a
yvesmancera
Dies war der Trick für mich für den Nexus 4-Emulator. Musste auf image.sysdir.1`system-images \ android-15 \ google_apis \ armeabi-v7a` aktualisieren
Zweig
10

Ich habe das Problem behoben, indem ich "C: \ Programme \ Android \ android-sdk \ AVD Manager.exe" ausgeführt und mein defektes Gerät repariert habe.

airo
quelle
5

Kurze Antwort : Versuchen Sie, dasselbe Bild mit der alten Schule zu erstellen <AndroidSDK>\AVD Manager.exe.

Als ich in Android Studio arbeitete und alle integrierten Tools ausführte, war es für mich selbstverständlich, die alten Manager (AVD / SDK) nicht zu verwenden.

In meinem Fall hatte ich dieses Problem, als ich den neuen (integrierten) AVD Manager zum Erstellen von Geräten mit alten Systemabbildern verwendete (API 11 und niedriger, wie ich getestet habe).

Als ich versuchte, das alte AVD Manager-Tool (in <AndroidSDK>\AVD Manager.exe) zu verwenden, um diese alten Geräteabbilder zu erstellen, hatte ich Erfolg.

Luan
quelle
2
Vielen Dank für den Vorschlag - anscheinend weiß das eigenständige Tool, wie man Dinge für die älteren Plattformen einrichtet. Unter OS X / macOS : ~/Library/Android/sdk/tools/android avd.
Neuralmer
4

Hey, da ist gerade das gleiche Problem aufgetreten, das Sie gemacht haben. Der dritte Link in Google hat mich zu diesem Code geführt, der den Fehler auslöst.

if (kernelFile == NULL) {
        kernelFile = avdInfo_getKernelPath(avd);
        if (kernelFile == NULL) {
            derror( "This AVD's configuration is missing a kernel file!!" );
            const char* sdkRootDir = getenv("ANDROID_SDK_ROOT");
            if (sdkRootDir) {
                derror( "ANDROID_SDK_ROOT is defined (%s) but cannot find kernel file in "
                        "%s" PATH_SEP "system-images" PATH_SEP
                        " sub directories", sdkRootDir, sdkRootDir);
            } else {
                derror( "ANDROID_SDK_ROOT is undefined");
            }
            exit(2);

an die die Person schrieb:

"/ * Wenn der Name des Kernel-Images mit" -armv7 "endet, ändern Sie den CPU * -Typ automatisch. Dies ist ein schlechter Ansatz für die * Konfigurationsverwaltung, sollte es uns jedoch ermöglichen, ARMv7 * -System-Images mit Dex Preopt Pass zu erstellen ""

Also ging ich zurück und lud die x86 Intel Atom-Version für meine gewünschte API-Stufe herunter und konnte den Emulator ohne Fehler hochfahren. Hoffe es hilft dir auch .....

Brandon
quelle
2

Normalerweise tritt der Fehler aufgrund eines ungeeigneten AVD-Emulators für den App-Typ auf, für den Sie entwickeln. Zum Beispiel, wenn Sie eine App für ein Wearable entwickeln, aber versuchen, sie mit einem Telefonemulator auszuführen.

M Muli
quelle
2

Ich hatte den gleichen Fehler. Die Lösung für mich war, den Pfad ANDROID_HOME zu ändern . Zuerst habe ich mir den Tools-> Android-> SDK-Manager von Android Studio angesehen. In diesem Fenster sehen wir den Pfad, in dem Android Studio nach dem SDK sucht: image

Dann öffnete ich eine Windows CMD-Shell, ausgeführt:

echo %ANDROID_HOME%

Der Weg war jedoch anders als in der ANDROID STUDIO-KONFIGURATION des ersten Schritts.

Die Lösung bestand darin, die Benutzerumgebung ANDROID_HOME auf den ersten Schritt zu ändern: image

Ich schloss schließlich die cmd-Shell und öffnete eine weitere cmd-Shell, um Folgendes auszuführen:

echo %ANDROID_HOME%

Der Pfad wurde aktualisiert und ich konnte meinen Emulator perfekt ausführen.

Hector Pasarin
quelle
1

In meinem Fall (Windows 10) war der Grund, dass ich es gewagt habe, das Android SDK in einen nicht standardmäßigen Ordner zu entpacken. Als ich es auf die Standardeinstellung c: / Users / [Benutzername] / AppData / Local / Android / Sdk verschoben und die Pfade in Android Studio und Systemvariablen geändert habe, begann es zu funktionieren.

Lukas Hanacek
quelle
1
  • Öffnen Sie Android Studio.
  • Gehen Sie zu Einstellung> Systemeinstellung> Android SDK
  • Holen Sie sich den "Android SDK Location".
  • Setzen Sie die Umgebungsvariable ANDROID_SDK_ROOT auf diesen Wert.

Es hat bei mir funktioniert und ich bin auf Windows 10 und Android Studio 2.3.3

3lokh
quelle
1
  1. Gehen Sie zu "Bearbeiten der Systemumgebungsvariablen".
  2. Klicken Sie auf die Schaltfläche Neu und geben Sie "ANDROID_SDK_ROOT" als Variablennamen und den vollständigen Pfad für android sdk als Variablenwert ein. Klicken Sie auf OK und schließen Sie.
  3. AVD aktualisieren.
  4. Dadurch wird der Fehler behoben.
Ritika Ranjan
quelle
-1

Ein gängiger Ansatz zur Lösung dieses Problems.

1.ÜBERPRÜFEN Sie Ihren SDK-Manager, indem Sie ihn von Ihrem Android-Studio aus ausführen, und ./android.shhelfen Sie dem eigenständigen SDK-Ordner, indem Sie ausführen , um defekte Pakete zu finden

  1. Versuchen Sie, Systememulator-Images mit Google API-Unterstützung als Intel zu installieren. Genau wie ich mein Problem gelöst habe, indem ich auf ein anderes System-Image gestoßen bin.

  2. Von Google für Linux vorgeschlagenes Experiment zur KVM-basierten Virtulaisierung

Daniel Adenew
quelle