web-dev-qa-db-fra.com

Gradle, Android et l'emplacement du SDK Android_HOME

edit: (août-2016)

Cette question date de novembre 2013 (alors qu'Android Studio était encore en mode Aperçu du développeur), 

Actuellement (AS v2.2, août 2016) pendant l'installation, AS demande de choisir le dossier SDK (ou d'installer par défaut) et s'applique automatiquement à tout projet que vous ouvrez.

Cela signifie que toute solution de contournement ou solution éventuelle n’est pas pertinente car le problème n’est plus reproductible.

question originale:

nous avons ce projet avec plusieurs modules déjà configurés et exécutés correctement sur un autre PC développeur à l'aide d'un wrapper. J'ai cloné les sous-modules Git complets dans ma machine.

Ci-dessous, une impression directe de ma ligne de commande:

$ ./gradlew

FAILURE: Build failed with an exception.

* Where:
Build file '/home/budius/project_name/ActionBar-PullToRefresh/library/build.gradle' line: 1

* What went wrong:
A problem occurred evaluating project ':ActionBar-PullToRefresh:library'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an Android_HOME environment variable.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.378 secs

$ echo $Android_HOME
/home/budius/Applications/Android-studio/sdk
$ 

donc, comme vous pouvez le voir, Android_HOME est là. Que veulent-ils d'autre? Quel est le problème ici.

fonctionnant sous Ubuntu 13.04

modifier:

J'ai déjà créé un fichier local.properties avec sdk.dir=<path> à la racine du projet et cela fonctionne. Mais cela rend le code plus difficile à porter sur plusieurs serveurs n Build Server, donc la question est toujours ouverte. 

Quelqu'un sait pourquoi Android_HOME ne fonctionne pas et que faire pour le faire fonctionner?

145
Budius

J'ai résolu le problème. Cela fonctionne pour moi:

Dans

/ my_current_project /

J'ai créé un fichier appelé local.properties et l'ai mis à l'intérieur

sdk.dir =/my_current_path_to/sdk

Dans la console je dois faire

définir Android_HOME =/my_current_path_to/sdk

J'espère que cela t'aides.

93
u53r

Sous OSX, IntelliJ ne détecte pas les variables d'environnement que vous avez définies dans votre profil .bash_profile ou .bash_rc, etc.

Essayez ceci en substituant la valeur de votre propre emplacement sdk:

launchctl setenv Android_HOME /usr/local/opt/Android-sdk

Ensuite, redémarrez IntelliJ et Bob est votre oncle.

Voici une référence au problème, énoncée plus généralement: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/

49
Matthew Daumen

Dans mon cas, settings.gradle était manquant.

Enregistrez le fichier et placez-le dans le dossier de niveau supérieur de votre projet, même si vous pouvez également copier depuis un autre projet.

Référence de la capture d'écran:

 enter image description here

J'espère que cela vous ferait gagner du temps.

26
Hiren Patel

Cela fonctionne pour moi:

$ export Android_HOME=/path_to_sdk/
$ ./gradlew
24
giopromolla

Le plugin Android Gradle est toujours en version bêta et cela peut simplement être un bug. Pour moi, configurer Android_HOME fonctionne, mais nous sommes peut-être sur des versions différentes (veuillez réessayer avec la version la plus récente et laissez-moi savoir si cela fonctionne ou non).

Il convient également de définir la variable d’environnement Android_SDK et Android_HOME.

J'ai rencontré des problèmes avec certaines machines et nous avons donc créé local.properties dans ces cas. J'ai également remarqué que la dernière version d'Android Studio créera ce fichier pour vous et renseignera la propriété sdk.dir.

Notez que vous ne devez pas vérifier le fichier local.properties dans le contrôle de version, nous l’avons ajouté à notre gitignore afin qu’il n’interfère pas avec le portage du code sur des systèmes que vous avez correctement identifiés comme un problème potentiel.

19
ZoFreX

Pour une raison quelconque, le script Gradle ne prend pas la valeur d'Android_HOME de l'environnement. Essayez de le spécifier explicitement sur la ligne de commande

$ Android_HOME=<sdk location> ./gradlew
15
Andrew Marshall

J'ai rencontré le même problème, même si le fichier local.properties de mon module principal et la variable d'environnement Android_HOME étaient définis au niveau du système. 

Ce problème a été résolu lorsque j'ai copié le fichier local.properties qui se trouvait dans mon module de projet principal à la racine du projet entier (c'est-à-dire le répertoire parent de votre module principal)

Essayez de copier le fichier local.properties dans les modules et le répertoire racine. Devrait marcher.

14
joecizac

J'ai rencontré le même problème lors de l'ouverture d'un référentiel git cloné. Le fichier local.properties est automatiquement ajouté au fichier .gitignore, car il est spécifique à l'environnement de construction de chaque ordinateur et ne fait donc pas partie du référentiel.

La solution consiste à importer le projet au lieu de simplement l'ouvrir après l'avoir cloné depuis git. Ceci oblige Android Studio à créer le fichier local.properties spécifique à votre ordinateur:

Fichier >> Importer un projet >> 

13
Bulwinkel

MAC OS X:

  1. Ouvrez Terminal et éditez le fichier:

~/.bash_profile

ajouter:

export Android_HOME=~/Library/Android/sdk export PATH=${PATH}:${Android_HOME}/tools export PATH=${PATH}:${Android_HOME}/platform-tools

  1. Courir:

    source ~/.bash_profile

  2. Redémarrez le terminal et Android Studio

9
Javier Armendariz

Comment le faire sur MAC OSX:

1) Ouvrez Terminal et Edit: vi ~/.bash_profile S'il n'y a pas de fichier, ajoutez-le.

2) Ajouter (Changez votre nom d'utilisateur et ajoutez ceci):

#Java var home: Java_HOME="/usr/libexec/Java_home" Android_HOME="/Users/<YOUR USER NAME>/Library/Android/sdk"

3) Exécutez source ~/.bash_profile.

4) Exécuter echo $Java_HOME; echo $Android_HOME;

5) Si votre sortie est:

/usr/libexec/Java_home /Users/<YOUR USER NAME>/Library/Android/sdk

Donc tu es bon.

et redémarrer le studio Android!

Et, Assurez-vous que vous avez Java :)

Java -version

Et gradle :)

gradle --version

8
Nimitack

Copiez le fichier local.properties dans le dossier racine, puis réexécutez-le.

6

Cela a fonctionné pour moi (Ubuntu):

Ajoutez Android_HOME=/path/to/Android-sdk à /etc/environment.

Redémarrez.

4
everyman

sous Windows, je mets Android_HOME = E:\Android\adt-bundle-windows-x86_64-20131030\sdk Ensuite, cela fonctionne comme prévu. 

Sous Linux, vous devez définir sdk.dir. 

Le script utilise deux variables différentes. 

3
richard

Si vous utilisez Windows Plantform, essayez d’exécuter Android Studio en tant qu’administrateur.

2
Megoc

Sous Linux, essayez d’exécuter studio.sh à partir d’un terminal et définissez Android_HOME dans ce terminal. Cela a fonctionné pour moi.

2
Naren

J'ai le même problème, semble que l'exemple de code ne peut pas trouver l'environnement Android, au lieu d'essayer de résoudre ce problème, je supprime simplement l'exemple de code de settings.gradle, puis l'installation se passe bien.

après cela, il suffit d'importer le projet dans Eclipse et c'est tout :)

2

Votre fichier local.properties est peut-être manquant. Si c'est le cas, ajoutez un fichier nommé 'local.properties' dans /local.properties et indiquez l'emplacement du sdk comme suit. 

sdk.dir = C:\Utilisateurs \\ AppData\Local\Android\Sdk

1
kinath_ru

Supprimez simplement le fichier sdk.dir du fichier local.properties et définissez la variable Android_HOME environment. Cela a fonctionné pour moi.

1
PraveenMax

exporter Android_HOME =/xxx/xxx/dans Shell, puis utilisez-le dans System.env.Android_HOME dans un fichier Gradle.

PS: n'oubliez pas les mots-clés "export" pour rendre Android_HOME global.

1
Jindowin

Je suis tombé sur un problème similaire. D'une manière ou d'une autre, je n'avais pas de dossier de construction dans mon projet. En copiant ce dossier d'un autre projet dans mon projet avec lequel j'avais un problème, cela a résolu ce problème.

0
Horatio

J'ai rencontré le même problème sur Ubuntu (local.properties et Android_HOME ont été ajoutés), mais la construction a échoué. La solution consiste donc à Ajouter les lignes suivantes 

export Android_HOME=/home/<user>/Android/Sdk export PATH=$PATH:/home/<user>/Android/Sdk/tools

directement au script studio.sh (dans /usr/local/Android-studio/bin)

Ce sera peut-être utile.

0
Lukas

Vous avez dit que le contrôle de version local.properties crée des problèmes pour vous. J'ai piraté un script qui utilise l'outil de ligne de commande Android pour actualiser le fichier local.properties sur les ordinateurs impliqués dans la production. Le projet de mise à jour Android command, en plus du local.properties produit beaucoup de déchets indésirables (du moins pour moi), raison de toutes les commandes rm à la fin du script .

#!/bin/bash
scname="$0"
echo "${scname}: updating local properties..."
ln -fs src/main/AndroidManifest.xml
Android update project -t 24 -p "$(pwd)"
echo "${scname}: ...done"
echo "${scname}: removing Android update project junk ..."
rm -v project.properties
rm -v build.xml
rm -v proguard-project.txt
rm -v AndroidManifest.xml
echo "${scname}: ...done"

Ce script est la première chose que nous exécutons sur toute nouvelle machine où nous codons. Il doit être exécuté dans le répertoire du projet racine. Bien sûr, Android studio peut avoir un moyen graphique de gérer cela, mais je ne le saurais pas car j'utilise un éditeur différent. Je ne peux pas non plus prétendre que la solution est générale, mais cela «fonctionne pour moi» (tm). 

0
Mali Remorker

solutions:

1 ajoutez "sdk.dir = path_of_sdk"

2 exécutez gradlew avec evn comme suit:

$ Android_HOME = path_of_sdk ./gradlw

0
RoFF

Je viens de résoudre exactement le même problème en ajoutant Android_HOME en tant que variable système . Sous Ubuntu, il devrait figurer / etc/profile ou dans un fichier de script shell dans /etc/profile.d/

Ensuite, déconnectez-vous et reconnectez-vous. Gradle doit maintenant reconnaître la variable Android_HOME. 

0
Joe3112

L'installation de Build-Tools 23.0.1 au lieu de 23.0.2 a corrigé ce problème pour moi.

0
TheBetterJORT

Pour les fenêtres:

  1. Ajoutez Android_HOME aux variables d’environnement: 
  2. Ajoutez% Android_HOME%\platform-tools au PATH.
0
J. Jerez

j'ai rencontré la même erreur, mais dans mon cas, je clonais un projet. Le projet cloné a été construit avec l'API Android 22 que je n'avais pas installée à l'époque (j'avais les API 24 et 25 installées) ... donc je devais télécharger les outils de sdk pour API 22

0
Didi Pepple