web-dev-qa-db-fra.com

Impossible de trouver la variable d'environnement 'Android_HOME' dans le sous-système Windows 10 Linux

J'essaie d'exécuter ionic cordova build --release Android, mais cela a pour résultat cette erreur.

CordovaError: Failed to find 'Android_HOME' environment variable. Try setting it manually.
Failed to find 'Android' command in your 'PATH'. Try update your 'PATH' to include path to valid SDK directory.

J'utilise Windows 10, mais j'utilise le sous-système linux (donc toutes les commandes linux etc ...). 

Je suis allé dans mes variables système et mis dans les trucs du SDK Android pour Windows comme on le voit ici:

 enter image description here

Mais quand je retourne dans bash/Shell, quand je fais echo $Android_HOME, il ne montre pas le chemin que j'ai défini. Devrais-je plutôt installer Android SDK pour Linux et le laisser pointer là-dessus? Ou est-ce que je peux faire pointer ce chemin Android_HOME sur mon lecteur C: /, car je ne pense pas qu'il existe un lecteur C:/lorsque je suis sur le sous-système Linux

3
Mike K.

En effet, les variables d’environnement du sous-système linux sont séparées des variables d’environnement Windows, à l’exception de PATH qui est partagé par défaut à partir de Creator Update.

Dans ce cas, vous devez ajouter Android_HOME à la variable d’environnement linux. Une façon de le faire est de l'ajouter dans ~/.bashrc

nano ~/.bashrc

ajouter le code suivant à la fin du fichier

export Android_HOME="/mnt/c/Users/<user_name>/AppData/Local/Android/sdk"
export PATH="$PATH:$Android_HOME/platform-tools:$Android_HOME/tools"

enregistrer, quitter et exécuter source

source ~/.bashrc

Vous pourrez maintenant exécuter l’outil Android SDK à partir du sous-système Linux, bien qu’il y ait une réserve selon laquelle vous devez ajouter .exe pour chaque outil. Par exemple:

adb --> won't work
adb.exe --> works
7
pradithya aria

J'ai donc écrit une grande réponse à ce sujet et, pour une raison quelconque, je ne la trouve pas. Je ne sais pas si cela n'a pas été posté ou ce qui s'est passé. Donc, réécrire ce que j'ai écrit plus tôt

Windows et Windows Sub System Linux ne partagent par défaut aucune variable d'environnement en tant que telle. Mais il existe un moyen de partager automatiquement les variables entre les deux comme expliqué dans l'article ci-dessous

https://blogs.msdn.Microsoft.com/commandline/2017/12/22/share-environment-vars-between-wsl-and-windows/

Par défaut, votre c:\ est mis en correspondance avec /mnt/c. Maintenant vous avez deux options

Environnements Shell

Vous pouvez mettre à jour votre ~/.bashrc ou ~/.bash_profile (selon votre choix) et exporter les variables

export Android_HOME="/mnt/c/Android/sdk"
export PATH="$PATH:$Android_HOME/platform-tools:$Android_HOME/tools"

Environnement partagé

Windows a créé une variable d'environnement spéciale nommée WSLENV. Cette variable d'environnement peut être utilisée pour partager la variable entre deux environnements et elle traduira également automatiquement les chemins. Avant de plonger dans des drapeaux spéciaux

  • /p : Cet indicateur indique qu'un chemin doit être traduit entre les chemins WSL et les chemins Win32. 
  • /l : Cet indicateur indique que la valeur est une liste de chemins. En WSL, il s’agit d’une liste délimitée par des deux-points. Dans Win32, il s’agit d’une liste délimitée par des points-virgules. 
  • /u : Cet indicateur indique que la valeur ne doit être incluse que lors de l'appel de WSL à partir de Win32. Dans l'exemple ci-dessous, nous avons défini FORWSL à partir de cmd et il apparaîtra dans WSL.
  • /w : Cet indicateur indique que la valeur ne doit être incluse que lors de l'appel de Win32 à partir de WSL.

Maintenant, si vous définissez l'environnement comme ci-dessous

WSLENV=Android_HOME/p

Ci-dessus, le Android_HOME doit être partagé entre WSL et Windows et le /p indique qu'il doit être partagé automatiquement. C'est la méthode recommandée pour que tout soit synchronisé.

1
Tarun Lalwani