web-dev-qa-db-fra.com

PANIC: Chemin d'accès système AVD cassé. Vérifiez votre valeur Android_SDK_ROOT

Après avoir tapé cordova run Android dans le terminal, j'obtiens cette erreur:

Waiting for emulator to start...
PANIC: Broken AVD system path. Check your Android_SDK_ROOT value [/Users/username/Library/Android/sdk]!

Cela se produit après l'exportation:

export Android_SDK_ROOT='/Users/username/Library/Android/sdk'

Avant d'exporter j'ai eu:

Waiting for emulator to start...
PANIC: Cannot find AVD system path. Please define Android_SDK_ROOT

Des idées où je vais mal? Je suis sûr que c'est la racine du SDK alors pourquoi ai-je le chemin d'accès système avd cassé?

73
d.boyd

Il peut y avoir plusieurs problèmes différents lorsque vous déplacez votre AVD ou SDK dans un autre répertoire, que vous remplacez un ancien SDK par un nouveau ou que vous obtenez le SDK corrompu.

Je décrirai ci-dessous tous les problèmes possibles que je connais et vous donnerai plusieurs façons de les résoudre.

Bien sûr, je suppose que vous avez créé un fichier AVD, qui se trouve dans C:\Users\<user_name>\.Android\avd (Windows) ou ~/.Android/avd (Linux/MacOS).

Si vous avez déplacé .Android à un autre emplacement, définissez la variable d'environnement Android_SDK_HOME sur le chemin du répertoire parent contenant votre .Android et assurez-vous que le Gestionnaire AVD a trouvé votre périphérique virtuel.

Vérifie également les chemins dans <user_home>/.Android/avd/<avd_name>.ini


Structure du SDK incomplète/corrompue

PANIC: Cannot find AVD system path. Please define Android_SDK_ROOT
PANIC: Broken AVD system path. Check your Android_SDK_ROOT value

Ces 2 erreurs se produisent si l'émulateur ne peut pas trouver le SDK ou si le SDK est endommagé. 

Donc, tout d’abord, je recommande de supprimer la variable Android_SDK_ROOT. Cela n'est nécessaire que lorsque l'émulateur est situé en dehors du répertoire du SDK. Mais en général, votre émulateur reste dans le répertoire SDK. Et dans ce cas, il doit détecter l'emplacement du SDK automatiquement. Si ce n'est pas le cas, votre SDK a probablement un mauvais filetree. Veuillez faire ce qui suit:

  1. Vérifiez que le répertoire SDK} a au moins ces 4 répertoires: emulator, platforms, platform-tools, system-images. Il est très important! Ces répertoires doivent être présents. Si certains n'existent pas, créez simplement des répertoires vides.

  2. Allez à <user_home>/.Android/avd/<avd_name> et ouvrez config.ini. Recherchez la propriété image.sysdir.1. Il pointe vers le répertoire, à l'intérieur du répertoire SDK, qui contient l'image système réelle. Assurez-vous que ce répertoire existe et contient des fichiers tels que build.prop, system.img, etc. Sinon, vous devez ouvrir le SDK Manager et télécharger les images système requises par votre AVD (voir ci-dessous).

Si tout est configuré correctement, lorsque ces erreurs concernant Android_SDK_ROOT doivent disparaître. Si ce n'est pas le cas, vous pouvez maintenant essayer de configurer la variable Android_SDK_ROOT.


Les packages requis et HAXM ne sont pas installés

Le prochain problème que vous pouvez rencontrer est que l'émulateur commence à se lancer, mais se bloque ou se ferme immédiatement. Cela signifie probablement que tous les packages requis ne sont pas installés.

Une autre erreur possible est:

Impossible de détecter automatiquement un fichier binaire ADB. Certaines fonctionnalités de l'émulateur ne fonctionneront pas tant qu'un chemin personnalisé vers ADB n'aura pas été ajouté dans la page des paramètres étendus.

Donc, pour lancer avec succès un fichier AVD, vous devez vous assurer qu'au moins ces packages sont installés:

emulator (Android Emulator)
platform-tools (Android SDK Platform-Tools)
tools (Android SDK Tools)

Et comme je l’ai mentionné précédemment, vous devez installer les images système utilisées par votre AVD, par exemple system-images;Android-25;google_apis;x86.

Notez que les versions les plus récentes du SDK n’ont pas de SDK Manager.exe autonome. Au lieu de cela, vous devez utiliser Android Studio ou tools\bin\sdkmanager.bat (Linux/MacOS ont probablement des fichiers sh).

Pour lister tous les paquets disponibles, utilisez sdkmanager --list ou sdkmanager --list --verbose

Pour installer les packages, utilisez sdkmanager <package1> <package2> ...

Aussi, je recommande d'installer HAXM sur votre système manuellement.


Les fichiers Qcow2 font référence à des images de base incorrectes ou inexistantes

Le dernier problème que je vais mentionner se produit lorsque vous essayez de déplacer AVD ou SDK d’un ordinateur ou d’un répertoire à un autre. Dans ce cas, vous pouvez obtenir une telle erreur:

qemu-system-i386.exe: -drive si = aucun, contrôle de chevauchement = aucun, cache = non sécurisé, index = 0, id = système, fichier = C:\Users\<old_user_name>\.Android\avd\<avd_name>.

avd\system.img.qcow2, en lecture seule: impossible d'ouvrir le fichier de sauvegarde: impossible d'ouvrir '<old_sdk_dir>\system-images\Android-22\google_apis\x86\system.img': argument non valide

Il y a 2 façons de le réparer:

  1. Si vous ne vous souciez pas des données que contient l’AVD, supprimez simplement tous les fichiers qcow2 du répertoire AVD (par exemple, à partir de <user_home>/.Android/avd/<avd_name>). Dans ce cas, vous obtiendrez une version propre d'Android, comme après une réinitialisation matérielle.

  2. Si les données de l'émulateur sont importantes pour vous, ouvrez tous les fichiers qcow2 un par un en utilisant n'importe quel éditeur HEX (je préfère HxD ), recherchez le chemin d'un fichier img de base et modifiez-le en le mode Overwrite (pour conserver la taille du fichier). Sélectionnez ensuite le chemin et obtenez sa longueur au format hexadécimal (par exemple, 2F). 2F représente la barre oblique ASCII /. Mettez-le en position 13:

 Edit Android qcow2 files using HxD HEX editor

PS: Pas sûr, mais il y a probablement des utilitaires comme qemu-img permettant de définir une image de base différente. Eh bien, pour moi, il est plus facile d’éditer manuellement le binaire.


Vous pourrez maintenant lancer votre appareil virtuel Android avec succès. J'espere :)

90
Oleg Cherr

Sur Mac: J'avais installé Android-sdk en utilisant brew ainsi qu’Android Studio. D'une manière ou d'une autre, avoir 2 installations posait ce problème. Lorsque j'ai désinstallé mon installation de brassage du sdk en utilisant brew cask uninstall Android-sdk et ajouté les vars suivants à mon env. Ça a marché.

export Android_HOME=/Users/<Username>/Library/Android/sdk
export Android_SDK_ROOT=$Android_HOME
87
EFreak

Cela signifie que votre chemin d'accès aux outils est incorrect. Voici à quoi cela ressemble sur un mac utilisant une infusion. Attention à la version.

export Android_SDK_ROOT='/usr/local/Cellar/Android-sdk/24.4.1_1'

Dans votre cas, il semble que vous devriez exécuter ceci:

export Android_SDK_ROOT='/Users/username/Library/Android/sdk'
14
TechnoTim

Cela résoudra votre problème sous macOS:

pico ~/.bash_profile

export Android_HOME=/Users/$USER/Library/Android/sdk
export Android_SDK_HOME=/Users/$USER/Library/Android/sdk
export Android_AVD_HOME=/Users/$USER/.Android/avd
export PATH=${PATH}:$Android_HOME/tools:$Android_HOME/platform-tools:$Android_AVD_HOME

source ~/.bash_profile
8
cuasijoe
  • Le répertoire Platfoms était manquant dans/usr/local/share/Android-sdk .

  • J'ai créé un répertoire vide nommé plates-formes qui a résolu le problème.

4
Olivier Maina

ok je peux utiliser Android depuis Cordova, j'ai changé Android_HOME en,

export Android_HOME=/usr/local/opt/Android-sdk
4
d.boyd

Vous devriez ajouter AVD Emulator . Allez à cet endroit:

C:\Users\%username%\AppData\Local\Android\sdk\

démarrez AVD Manager et dans le deuxième onglet (Définitions de périphériques), cliquez sur le bouton "createAVD".

3
Blagojce

J'ai eu le même problème dans Windows 10,
J'ai résolu mon problème en suivant les étapes ci-dessous.
ouvrir Android Studio
- Outils
- Gestionnaire de SDK
- copier Android SDK Localisation
Emplacement du SDK Android
set variable d'environnement système
Android_HOME et Android_SDK_ROOT
variable d'environnement système

3
psaren

Je viens de rencontrer ce problème aujourd'hui et j'ai réussi à le résoudre.

Émulateur: [140735565005632]: ERREUR: Android/android-emu/Android/qt/qt_setup.cpp: 28: Bibliothèque Qt introuvable dans/Utilisateurs/votre_nom_utilisateur/Bibliothèque/Android/sdk/émulateur/lib64/qt/lib

15:08 Émulateur: impossible de lancer '/ Utilisateurs/votre_nom_utilisateur/Bibliothèque/Android/sdk/émulateur/qemu/darwin-x86_64/qemu-system-x86_64': Aucun fichier ou répertoire de ce type

La solution était assez simple. Installez simplement l'émulateur Android via Android Studio => outils => Android => Gestionnaire de SDK => Outils SDK => sélectionnez Android Emulator => Appliquer

J'utilise un MacBook Pro sur macOS High Sierra et je pense que votre ordinateur n'a rien à voir avec ce problème. L'émulateur n'est évidemment pas installé lors de la première utilisation du gestionnaire d'installation Android Studio, du moins pour moi, avec Android Studio 3.0.1.

Assurez-vous également que vos chemins sont définis dans votre .bashrc ou .zshrc comme ceci:

export Android_HOME=/Users/your_user_name/Library/Android/sdk
export Android_SDK_ROOT=$Android_HOME
export PATH=$PATH:$Android_HOME/emulator
export PATH=$PATH:$Android_HOME/tools
export PATH=$PATH:$Android_HOME/platform-tools
2
IsNotDefined

Comme @EFreak, j'ai installé Android-sdk avec homebrew (un gestionnaire de paquets pour Mac). Je devais le faire, car je suivais les tutoriels de nativescript. Si vous préférez utiliser la version brassée sur la version Android-sdk, utilisez cette réponse (cela vous permettra d'utiliser nativescripts tns run Android api), et si vous souhaitez utiliser Android-sdk par défaut pour le studio Android, suivez la réponse de @ EFreak.

En gros, il vous suffit de changer l'emplacement de votre SDK Android dans Android Studio. Commencez par ouvrir un projet dans un studio Android. Ensuite, ouvrez le gestionnaire de SDK en cliquant sur ce bouton.

 Android sdk manager button location

Ensuite, lorsque les préférences par défaut du gestionnaire de SDK Android apparaissent, vous devez cliquer sur Modifier en regard de l'emplacement du SDK Android.

 enter image description here

Ensuite, vous devez réellement mettre à jour l’emplacement du sdk sur l’écran de configuration des composants du sdk. Ma brew Android-sdk était situé ici /usr/local/share/Android-sdk.

 enter image description here

Ensuite, terminez l’assistant en installant tous les paquets. J'avais besoin de supprimer et de recréer mes émulateurs de périphérique à cette étape, mais cela semblait bien fonctionner par la suite.

2
John

Dans mon cas, il était cassé car Android_HOME et Android_SDK_ROOT étaient différents, donc une fois que j'ai défini Android_HOME comme identique à Android_SDK_ROOT, il a commencé à fonctionner.

2
jc12

Vérifiez si l'image système utilisée par votre AVD a été téléchargée sous $Android_SDK_ROOT/system-images/

2
aleung

Pour résoudre ce problème, je devais installer le package avec l'image système manquante à l'aide de SDK Manager.exe (sous "C:\Program Files (x86)\Android\android-sdk"). J'avais remarqué que l'image système dont j'avais besoin ("Android-23") était manquante dans "C:\Program Files (x86)\Android\android-sdk\system-images".

Après avoir exécuté SDK Manager.exe et installé les packages appropriés, j'ai pu exécuter l'émulateur dans Android Studio.

Voici la solution qui a fonctionné pour moi:

https://www.embarcadero.com/starthere/xe5/mobdevsetup/Android/en/creating_an_Android_emulator.html

1
Glauber

NativeScript

Si vous rencontrez des difficultés pour lancer l'émulateur Android via NativeScript, il est probable que les utilisateurs Android_HOME et Android_SDK_ROOT aient été remplacés.

J'ai réussi à créer un problème en installant Android Studio afin de générer un émulateur différent. Je l'ai fait après avoir déjà installé le Android sdk via home brew.

Ainsi, si lors de l'installation de NativeScript, vous avez choisi d'installer Android sdk via HomeBrew, NativeScript définira les paramètres ci-dessus de la manière suivante:

Android_HOME=/usr/local/share/Android-sdk
Android_SDK_ROOT=/usr/local/share/Android-sdk

L'installation ultérieure de Android Studio remplacera ces valeurs comme suit:

Android_HOME=/Users/[User]/Library/Android/sdk
Android_SDK_ROOT=/Users/[User]/Library/Android/sdk

Il y a donc naturellement un conflit avec Android studio et l'installation NativeScript/Brew du logiciel Android sdk. Supprimer l’un ou l’autre et/ou vérifier que la variable env contient le bon chemin doit permettre le lancement de votre émulateur.

1
Jamie Armour

La réponse d'Oleg Cherrs m'a amené à une solution. Comme il a mentionné

Allez à /.Android/avd/ et ouvrez le fichier config.ini. Recherchez la propriété> image.sysdir.1. Il pointe vers le répertoire du SDK contenant system> images. Assurez-vous que ce répertoire existe et contient des fichiers tels que build.prop,> system.img, etc. Sinon, vous devez ouvrir le SDK Manager et> télécharger les images système requises par votre AVD (voir ci-dessous).

J'ai trouvé le fichier d'émulateur * .ini correspondant dans le répertoire avd . J'ai modifié l'entrée "image.sysdir.1". J'ai remplacé le relatif par un chemin absolu (ajoutez le Android_SDK_ROOT devant). Après cela, l'émulateur a démarré à partir de la ligne de commande comme prévu.

1
Xerox23

J'ai eu le même problème qui, après avoir défini les variables de chemin d'accès suivantes, a disparu Remarque Le chemin d'accès AVD Home est différent des trois autres.

 enter image description here

1
Hitesh Sahu

Après avoir passé pas mal de temps à essayer d'autres "solutions" sur Google, le seulement qui fonctionnait pour moi, après avoir défini la variable d'environnement Android_SDK_ROOT sous Windows et ajouté et supprimé les variables Android_HOME et Android_SDK_HOME, était la réponse de Xerox23 - modification du Le fichier config.ini d'AVD permet de coder en dur la valeur de Android_SDK_ROOT dans la propriété image.sysdir.1.

Ceci utilisait Android Studio 3.0.1 et l'émulateur 26.1.4 pour lancer le périphérique virtuel à partir du gestionnaire AVD à partir d'Android Studio.

0
AndrWeisR

les erreurs varient réellement. Il est utile d'exécuter ./emulator avec l'option -verbose, cela affichera les erreurs réelles.

0
deathemperor

Pour la machine Windows: Après avoir essayé beaucoup de chemin défini, supprimer le chemin et etc . Ce qui fonctionne finalement est de localiser le dossier C:\Users\johndoe\.Android et de le supprimer. Après que vous puissiez lancer votre Android Studio, il vous demandera de télécharger et d'installer un nouveau fichier AVD. Il remplacera et créera un nouveau dossier et de nouveaux fichiers. Cela résout le problème.

0
Delino

Je viens d'avoir le même problème sur Mac et voici ce que j'ai fait:

  1. J'ai enlevé le sdk Android que j'ai installé avec brew
  2. Je règle la variable Android_HOME sur la même chose que Android_SDK_ROOT =/Users/nom d'utilisateur/Library/Android/sdk
0
allister

Je rencontre ce problème depuis que je pratique React Native depuis le début. Google a déconseillé les outils de ligne de commande et insiste sur le studio Android. La solution pour moi était de supprimer les outils de ligne de commande

rm -rf /usr/local/Cellar/Android-sdk

rm /usr/local/bin/Android

ouvrez AS install sdk v6 comme indiqué https://facebook.github.io/react-native/docs/getting-started.html#1-install-Android-studio

faire un nouveau AVD et ça va lancer sans erreur

0
Harry Moreno

Suivez les étapes ci-dessous, cela devrait résoudre votre problème

1.

export Android_HOME=/usr/local/Cellar/Android-sdk/24.4.1
export PATH=$PATH:$Android_HOME/tools:$Android_HOME/platform-tools:$Android_HOME/bin

2.

Go to Android studio preferences => Build, Execution, Deployment => Build Tools => Gradle => Android studio  => Enable embedded Maven Repository should be selected.

3.

Go to Android studio preferences => Appearance & Behavior => System Settings => Android SDK => Go to SDK Tools and select Android Emulator
0
Gampesh