154 votes

Gradle, Android et l'emplacement ANDROID_HOME du SDK

edit : (aug-2016)

Cette question date de novembre 2013 (alors qu'Android Studio était encore en mode Developer Preview),

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

Cela signifie que toute solution de contournement ou correctif éventuel n'est pas pertinent car le problème n'est plus reproductible.

question initiale :

Nous avons ce projet avec plusieurs modules qui est déjà configuré et s'exécute correctement sur un autre PC de développeur en utilisant un wrapper. J'ai cloné les submodules git complets dans ma machine.

Ci-dessous, c'est 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 le ANDROID_HOME est là. Que veulent-ils d'autre ? Ce qui ne va pas ici.

fonctionnant sur Ubuntu 13.04

éditer :

J'ai déjà créé un fichier local.properties avec sdk.dir=<path> sur le projet Root et cela fonctionne. Mais cela rend le code plus difficile à porter sur les systèmes et le serveur de construction, donc la question reste ouverte.

Quelqu'un sait pourquoi le ANDROID_HOME ne fonctionne pas et ce qu'il faut faire pour qu'il fonctionne ?

1 votes

Essayez de spécifier le chemin de votre SDK dans un fichier local.properties, sous le répertoire racine de votre projet. Le fichier devrait avoir ceci : sdk.dir=<sdk_install_dir>

1 votes

Bonjour @GabrieleMariotti ; merci pour la suggestion. Mais j'ai déjà fait cela et cela fonctionne. Mais cela rend le code plus difficile à porter sur les systèmes n build server. J'aimerais savoir si quelqu'un sait pourquoi le ANDROID_HOME ne fonctionne pas et ce qu'il faut faire pour qu'il fonctionne ? J'ai ajouté cette information à la question.

0 votes

Je vous suggère de poster dans cette communauté G+. plus.google.com/communities/114791428968349268860 Il s'agit d'une communauté officielle de Google. En général, l'équipe de Google répond rapidement.

94voto

u53r Points 34

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

Sur

/mon_projet_actuel/

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

sdk.dir=/my_current_path_to/sdk

Dans la console, je dois faire

set ANDROID_HOME=/my_current_path_to/sdk

J'espère que cela vous aidera.

10 votes

Cela ne résout pas le problème car les fichiers local.properties devraient être "Local" et non sous versioning. (Même problème que Budius : je veux ce fichier local.properties dans mon ordinateur portable pour créer des builds pendant le développement, mais je ne veux pas ce fichier dans ma machine de build parce que le chemin des sdks n'est pas le même !)

7 votes

Au moins sous Windows, cela a fonctionné après le backslashing de la chaîne sdk.dir=. D:\\Soft\\adt -bundle-Windows-x86_64-20140702 \\sdk

0 votes

@Tobulug : vous pouvez contrôler les fichiers sous contrôle de version et ne pas ajouter ou désélectionner les fichiers locaux

19voto

ZoFreX Points 3946

Le plugin Android Gradle est encore en version bêta et il peut s'agir d'un simple bug. Pour moi, le réglage de ANDROID_HOME fonctionne, mais il se peut que nous soyons sur des versions différentes (veuillez réessayer avec la version la plus récente et faites-moi savoir si cela fonctionne ou non).

Il est également utile de définir la variable d'environnement ANDROID_SDK ainsi que ANDROID_HOME.

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

Notez que vous ne devez pas enregistrer 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 d'autres systèmes, ce que vous avez identifié à juste titre comme un problème potentiel.

2 votes

Définir ANDROID_SDK n'a rien fait pour moi.

0 votes

Quelle version de Gradle et du plugin Android utilisez-vous, et avez-vous un fichier local.properties ?

2 votes

En ajoutant sdk.dir=/path/to/android/sdk a fonctionné pour moi. J'exécute gradle dans le cadre d'un projet créé avec IntelliJ 13.0.2.

13voto

Bulwinkel Points 31

J'ai rencontré le même problème en ouvrant un dépôt git cloné. Le fichier local.properties est automatiquement ajouté au fichier .gitignore car il est spécifique à l'environnement de construction de chaque machine et ne fait donc pas partie du dépôt.

La solution consiste à importer le projet au lieu de simplement l'ouvrir après l'avoir cloné à partir de git, ce qui oblige Android studio à créer le fichier local.properties spécifique à votre machine :

Fichier >> Importer un projet

3voto

richard Points 79

Sous Windows, j'ai défini 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.

1 votes

Je l'ai ajouté dans le fichier location.properties mais je rencontre toujours le même problème.

1 votes

Sous Windows, assurez-vous d'échapper les antislashes dans le chemin. J'ai dû entrer le chemin comme sdk.dir=C:\\Users\\username\\AppData\\Local\\Android\\Sdk

2voto

J'ai le même problème, il semble que le code d'exemple ne peut pas trouver l'environnement Android, au lieu d'essayer de corriger cela, j'ai juste supprimé le code d'exemple de settings.gradle et ensuite l'installation se passe bien.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X