Impossibile eseguire l'emulatore in Android Studio


96

Ho appena finito di installare Android Studio e ho provato a provarlo. Quando provo a eseguire la mia app, ricevo il seguente messaggio di errore

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

Qualcuno sa come risolvere questo problema ????


1
Dai un'occhiata a questo risposta stackoverflow.com/questions/9712605/...
Psypher

@ Ted pottel, qualcuna delle risposte seguenti ha risposto alla tua domanda? In tal caso, fare clic sul segno di spunta accanto ad esso.
Harris

Risposte:


27

È possibile che tu non abbia davvero immagini di sistema. Controlla che $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7aesista e non sia vuoto. Se mancano davvero, installa / reinstalla con SDK manager.


2
Ho due problemi: 1: non riesco a trovare $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7a, 2: come reinstallare un dispositivo virtuale utilizzando SDK manager
Musa Haidari

Leggendo la tua risposta, tuttavia, potrei fare una soluzione alternativa, ovvero creare un nuovo dispositivo virtuale e il problema non si è verificato per quello nuovo
Musa Haidari

4
All'interno di SDK Manager, assicurati di controllare "Mostra dettagli pacchetto" in modo da poter visualizzare quali immagini di sistema sono installate e, in caso contrario, installarle
Martyn Davis

21

Vai a Strumenti | Android | AVD Manager

Fare clic sulla freccia sotto la colonna Azioni all'estrema destra (dove si trova il messaggio di errore)

Scegli Modifica

Lascia la selezione predefinita (Per me, MNC x86 Android M)

Fare clic su Avanti

Fare clic su Fine

Salva il tuo AVD e l'errore ora è sparito dall'ultima colonna. E l'emulatore funziona bene ora.


15

Ho appena risolto questo problema. Spero che questo aiuti gli altri. (Problema come in Android Studio v2) Questo problema riguarda gli emulatori di braccio. In questo esempio sto usando armeabi-v7a API 16

La correzione è di tre passaggi:

Passo 1: Apri sdk manager e assicurati di aver installato ARM EABI v7a System Image

Passaggio 2. Questo è il caso ovvio dell'aggiunta della posizione di sdk alle variabili di sistema.

Fare clic con il pulsante destro del mouse sull'icona "Questo PC" sul desktop, quindi

Properties -> Advanced system settings -> Environment Variables... Quindi aggiungi il percorso di sdk come nuovo nella sezione delle variabili di sistema utilizzando il nome della variabile ANDROID_SDK_ROOT.

Passaggio 3. Riavvia Android Studio per registrare le modifiche. Dopo aver corretto il ANDROID_SDK_ROOTproblema non è definito, l'emulatore non riesce ancora a trovare i file del kernel anche se può vedere che il gestore sdk lo ha installato

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

Il motivo è un miscuglio tra la posizione in cui il gestore sdk installa il file del kernel e la posizione in cui l'emulatore lo sta cercando.

Se apri il tuo config.ini (Android Studio -> AVD Mananger -> "Mostra su disco") per il tuo emulatore vedrai la seguente riga:

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

(cioè \ path-to-sdk \ add-ons \ addon -....)

Invece di modificare questo valore nel file config.ini ho copiato

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

(file kernel dalla cartella sdk manager installato)

per

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

E quello era il file del kernel mancante. Puoi eseguire l'emulatore. (Sarà necessario chiudere Android Studio e riaprirlo di nuovo) Dare all'emulatore un po 'di tempo poiché è 10 volte più lento rispetto a x86. (Il mio ha impiegato circa 5 minuti per iniziare)


Uh, dov'è il "config.ini per il tuo emulatore"?
Jay

Android Studio -> AVD Mananger -> "Mostra su disco". Modifica la risposta.
Asi Mugrabi

Questa è la risposta che effettivamente ha fatto il trucco per me, nel mio caso, questa era la mia riga modificata:image.sysdir.1=system-images\android-16\default\armeabi-v7a
yvesmancera

Questo ha funzionato per me per l'emulatore Nexus 4. Ho dovuto aggiornare image.sysdir.1a `system-images \ android-15 \ google_apis \ armeabi-v7a`
twig

10

L'ho risolto eseguendo "C: \ Programmi \ Android \ android-sdk \ AVD Manager.exe" e riparando il mio dispositivo rotto.


5

Risposta breve : prova a creare la stessa immagine usando la vecchia scuola <AndroidSDK>\AVD Manager.exe.

Lavorando in Android Studio, eseguendo tutti gli strumenti integrati, è diventato naturale per me non utilizzare i vecchi gestori (AVD / SDK).

Nel mio caso, ho avuto questo problema quando ho utilizzato il nuovo AVD Manager (integrato) per creare dispositivi con vecchie immagini di sistema (API 11 e inferiori, come ho testato).

Quando ho provato a utilizzare lo strumento AVD Manager della vecchia scuola (situato in <AndroidSDK>\AVD Manager.exe) per creare queste vecchie immagini del dispositivo, ho avuto successo.


2
Grazie per il suggerimento: sembra che lo strumento autonomo sappia come configurare le cose per le piattaforme più vecchie. Su OS X / MacOS: ~/Library/Android/sdk/tools/android avd.
neuralmer

4

Ehi, mi sono imbattuto nello stesso problema che hai fatto tu, il terzo collegamento in Google mi ha portato a questo bit di codice che genera l'errore,

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

a cui la persona ha scritto:

"/ * Se il nome dell'immagine del kernel termina con" -armv7 ", cambia automaticamente il tipo di cpu *. Questo è un approccio scadente alla gestione della * configurazione, ma dovrebbe permetterci di superare la compilazione di immagini di sistema ARMv7 * con dex preopt pass "

Quindi sono tornato e ho scaricato la versione x86 Intel Atom per il mio livello API desiderato e sono stato in grado di ottenere l'emulatore senza l'errore. Spero che aiuti anche te ...


2

Normalmente, l'errore si verificherà a causa di un emulatore AVD non adatto al tipo di app per cui stai sviluppando. Ad esempio, se stai sviluppando un'app per un dispositivo indossabile ma stai tentando di utilizzare un emulatore di telefono per eseguirlo.


2

Ho avuto lo stesso errore. La soluzione per me è stata cambiare il percorso ANDROID_HOME . Per prima cosa ho dato un'occhiata a strumenti- > android-> sdk manager da Android Studio. In quella finestra, possiamo vedere il percorso in cui Android Studio cerca l'SDK: immagine

Quindi ho aperto una shell CMD di Windows, eseguito:

echo %ANDROID_HOME%

ma il percorso era diverso da quello in ANDROID STUDIO CONFIGURATION del primo passaggio.

La soluzione è stata cambiare l'ambiente utente, ANDROID_HOME, a quello del primo passaggio: l' immagine

Alla fine ho chiuso la shell cmd e ho aperto un'altra shell cmd per eseguire:

echo %ANDROID_HOME%

il percorso è stato aggiornato e ho potuto eseguire perfettamente il mio emulatore.


1

Nel mio caso (Windows 10) il motivo era che ho avuto il coraggio di decomprimere l'SDK Android in una cartella non predefinita. Quando l'ho spostato su quello predefinito c: / Users / [nome utente] / AppData / Local / Android / Sdk e ho cambiato i percorsi in Android Studio e Variabili di sistema, ha iniziato a funzionare.


1
  • Apri Android Studio.
  • Vai a Impostazioni> Impostazioni di sistema> Android SDK
  • Ottieni la "Posizione SDK Android".
  • Imposta la variabile di ambiente ANDROID_SDK_ROOT su questo valore.

Ha funzionato per me e sono su Windows 10 e Android Studio 2.3.3


1
  1. Vai a "Modifica le variabili di ambiente di sistema".
  2. Fare clic sul pulsante Nuovo e immettere "ANDROID_SDK_ROOT" nel nome della variabile e immettere il percorso completo di android sdk nel valore della variabile. Fare clic su ok e chiudere.
  3. Aggiorna AVD.
  4. Questo risolverà l'errore.

-1

Un approccio comune da seguire per risolvere questo problema.

1.CONTROLLA il tuo gestore SDK eseguendo dal tuo studio Android e stand alons cartella sdk eseguendo ./android.shti aiuta a trovare pacchetti danneggiati

  1. Prova a installare le immagini dell'emulatore di sistema con il supporto dell'API di Google rispetto a quello Intel. Proprio come, ho risolto il mio problema correndo in un'altra immagine di sistema.

  2. Esperimento sulla virtualizzazione basata su KVM suggerito da Google per Linux

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.