Impossible d'exécuter l'émulateur dans Android Studio

96

Je viens de terminer l'installation du studio Android et d'essayer de le tester. Lorsque j'essaie d'exécuter mon application, le message d'erreur suivant s'affiche

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

Est-ce que quelqu'un sait comment réparer ceci????

Ted Pottel
la source
1
Découvrez cette réponse stackoverflow.com/questions/9712605/…
Psypher
@Ted pottel, est-ce que l'une des réponses ci-dessous a répondu à votre question? Si tel est le cas, veuillez cliquer sur la coche à côté.
Harris

Réponses:

27

Il est possible que vous n'ayez vraiment aucune image système. Vérifiez à nouveau qui $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7aexiste et n'est pas vide. S'ils manquent vraiment - installez / réinstallez avec le gestionnaire SDK.

tse
la source
2
J'ai deux problèmes: 1: Je ne trouve pas $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7a, 2: Comment réinstaller un appareil virtuel à l'aide du gestionnaire SDK
Musa Haidari
Cependant, en lisant votre réponse, je pourrais faire une solution de contournement, et c'était de créer un nouvel appareil virtuel et le problème ne s'est pas produit pour le nouveau
Musa Haidari
4
Dans le gestionnaire de SDK, assurez-vous de cocher «Afficher les détails du package» afin de pouvoir voir quelles images système sont installées, et si ce n'est pas le cas, installez-les
Martyn Davis
21

Allez dans Outils | Android | Gestionnaire AVD

Cliquez sur la flèche sous la colonne Actions à l'extrême droite (où se trouve le message d'erreur)

Choisissez Modifier

Laissez la sélection par défaut (pour moi, MNC x86 Android M)

Cliquez sur Suivant

Cliquez sur Terminer

Il enregistre votre AVD et l'erreur est maintenant partie de la dernière colonne. Et l'émulateur fonctionne bien maintenant.

Harris
la source
15

Je viens de réparer ça. J'espère que cela aide les autres. (Problème comme dans Android Studio v2) Ce problème concerne les émulateurs de bras. Dans cet exemple, j'utilise l'API armeabi-v7a 16

Le correctif est en trois étapes:

Étape 1: Ouvrez le gestionnaire sdk et assurez-vous que vous avez installé l'image système ARM EABI v7a

Étape 2. C'est le cas évident de l'ajout de l'emplacement de sdk aux variables système.

Faites un clic droit sur l'icône "Ce PC" sur le bureau, puis

Properties -> Advanced system settings -> Environment Variables... Ajoutez ensuite le chemin d'accès à sdk comme nouveau dans la section des variables système en utilisant le nom de la variable ANDROID_SDK_ROOT.

Étape 3. Redémarrez Android Studio pour enregistrer les modifications. Après avoir corrigé le ANDROID_SDK_ROOTproblème non défini, l'émulateur ne peut toujours pas trouver les fichiers du noyau même s'il peut voir que le gestionnaire sdk l'a installé sur

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

La raison est une confusion entre l'emplacement dans lequel le gestionnaire sdk installe le fichier noyau et l'emplacement où l'émulateur le recherche.

Si vous ouvrez votre config.ini (Android Studio -> AVD Mananger -> "Show On Disk") pour votre émulateur, vous verrez la ligne suivante:

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

(ie \ chemin-vers-sdk \ add-ons \ addon -....)

Au lieu de changer cette valeur dans le fichier config.ini que j'ai copié

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

(fichier noyau du dossier sdk manager installé)

à

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

Et c'était le fichier noyau manquant. Vous pouvez exécuter l'émulateur. (Vous devrez fermer Android Studio et le rouvrir) Donnez un peu de temps à l'émulateur car il est 10 fois plus lent que x86. (Le mien a pris environ 5 minutes pour démarrer)

Asi Mugrabi
la source
Euh, où est le "config.ini pour votre émulateur"?
Jay
Android Studio -> AVD Mananger -> "Afficher sur le disque". Modification de la réponse.
Asi Mugrabi
C'est la réponse qui a vraiment fait l'affaire pour moi, dans mon cas, c'était ma ligne modifiée:image.sysdir.1=system-images\android-16\default\armeabi-v7a
yvesmancera
Cela a fait l'affaire pour moi pour l'émulateur Nexus 4. J'ai dû mettre à jour image.sysdir.1vers `system-images \ android-15 \ google_apis \ armeabi-v7a`
twig
10

Je l'ai réparé en exécutant "C: \ Program Files \ Android \ android-sdk \ AVD Manager.exe" et en réparant mon appareil cassé.

airo
la source
5

Réponse courte : essayez de créer la même image en utilisant la vieille école <AndroidSDK>\AVD Manager.exe.

Travaillant sous Android Studio, exécutant tous les outils intégrés, il m'est devenu naturel de ne pas utiliser les anciens gestionnaires (AVD / SDK).

Dans mon cas, j'ai eu ce problème lors de l'utilisation du nouveau gestionnaire AVD (intégré) pour créer des périphériques avec d'anciennes images système (API 11 et inférieures, comme je l'ai testé).

Lorsque j'ai essayé d'utiliser l'outil AVD Manager de la vieille école (situé dans <AndroidSDK>\AVD Manager.exe) pour créer ces anciennes images de périphérique, j'ai eu du succès.

Luan
la source
2
Merci pour la suggestion - il semble que l'outil autonome sache comment configurer les choses pour les anciennes plates-formes. Sur OS X / macOS: ~/Library/Android/sdk/tools/android avd.
neuralmer
4

Hé, je viens de rencontrer le même problème que vous, le troisième lien dans Google m'a amené à ce bout de code qui génère l'erreur,

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

auquel la personne a écrit:

"/ * Si le nom de l'image du noyau se termine par" -armv7 ", alors changez le type de cpu * automatiquement. C'est une approche pauvre de la gestion de la configuration *, mais devrait nous permettre de dépasser la construction des images système ARMv7 * avec dex preopt pass "

Je suis donc retourné et ai téléchargé la version x86 Intel Atom pour le niveau d'API souhaité et j'ai pu obtenir l'émulateur sans l'erreur. J'espère que cela vous aide aussi .....

Brandon
la source
2

Normalement, l'erreur se produit en raison d'un émulateur AVD inadapté au type d'application pour laquelle vous développez. Par exemple, si vous développez une application pour un portable mais que vous essayez d'utiliser un émulateur de téléphone pour l'exécuter.

M Muli
la source
2

J'ai eu la même erreur. La solution pour moi était de changer le chemin ANDROID_HOME . J'ai d'abord jeté un coup d'œil aux outils-> android-> gestionnaire de sdk d'Android Studio. Dans cette fenêtre, nous pouvons voir le chemin où Android Studio recherche le SDK: image

Ensuite, j'ai ouvert un shell Windows CMD, exécuté:

echo %ANDROID_HOME%

mais le chemin était différent de celui de la CONFIGURATION ANDROID STUDIO de la première étape.

La solution était de changer d'environnement utilisateur, l'ANDROID_HOME, à celui de la première étape: image

J'ai finalement fermé le shell cmd et ouvert un autre shell cmd pour exécuter:

echo %ANDROID_HOME%

le chemin a été mis à jour et j'ai pu parfaitement exécuter mon émulateur.

Hector Pasarin
la source
1

Dans mon cas (Windows 10), la raison était que j'ai osé décompresser le sdk android dans un dossier non par défaut. Lorsque je l'ai déplacé vers celui par défaut c: / Users / [nom d'utilisateur] / AppData / Local / Android / Sdk et que j'ai changé les chemins dans Android Studio et les variables système, cela a commencé à fonctionner.

Lukas Hanacek
la source
1
  • Ouvrez le studio Android.
  • Accédez à paramètres> Paramètres système> SDK Android
  • Obtenez le "Emplacement du SDK Android".
  • Définissez la variable d'environnement ANDROID_SDK_ROOT sur cette valeur.

Cela a fonctionné pour moi et je suis sous Windows 10 et Android Studio 2.3.3

3lokh
la source
1
  1. Allez dans "Modifier les variables d'environnement système".
  2. Cliquez sur Nouveau bouton et entrez "ANDROID_SDK_ROOT" dans le nom de la variable et entrez le chemin complet android sdk dans la valeur de la variable. Cliquez sur ok et fermez.
  3. Actualisez AVD.
  4. Cela résoudra l'erreur.
Ritika Ranjan
la source
-1

Une approche commune à suivre pour résoudre ce problème.

1.Vérifiez votre gestionnaire de SDK en exécutant à partir de votre studio Android et restez debout dans le dossier sdk en exécutant ./android.shpour vous aider à trouver les packages cassés

  1. Essayez d'installer des images d'émulateur système avec la prise en charge de l'API Google plutôt que celle d'Intel. Tout comme, j'ai résolu mon problème en rencontrant une autre image système.

  2. Expérience sur la virtualisation basée sur KVM suggérée par Google pour Linux

Daniel Adenew
la source