Gradle, Android y la ubicación del SDK ANDROID_HOME


152

editar: (agosto-2016)

Esa pregunta es de noviembre de 2013 (mientras Android Studio todavía estaba en modo de Vista previa del desarrollador),

Actualmente (AS v2.2, agosto de 2016) durante la instalación, AS solicita elegir la carpeta SDK (o instalar en su valor predeterminado) y se aplica automáticamente a cualquier proyecto que esté abriendo.

Eso significa que cualquier posible solución o solución es irrelevante ya que el problema ya no es reproducible.

pregunta original:

Tenemos este proyecto con varios módulos que ya están configurados y se ejecutan correctamente en otra PC de desarrollador utilizando un contenedor. Cloné los submódulos git completos en mi máquina.

Debajo hay una impresión directa de mi línea de comando:

$ ./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
$ 

entonces, como puedes ver, ANDROID_HOME está ahí. ¿Qué más quieren? ¿Qué pasa aquí?

corriendo en Ubuntu 13.04

editar:

Ya creé un archivo local.properties sdk.dir=<path>en la raíz del proyecto y funciona. Pero eso hace que el código sea más difícil de transferir a través de sistemas y servidores de compilación, por lo que la pregunta sigue abierta.

¿Alguien sabe por qué ANDROID_HOME no funciona y qué hacer para que funcione?


1
Intente especificar la ruta de su SDK en un archivo local.properties, en el directorio raíz de su proyecto. El archivo debe tener esto: sdk.dir = <sdk_install_dir>
Gabriele Mariotti

1
Hola @GabrieleMariotti, gracias por la sugerencia. Pero ya hice esto y funciona. Pero eso hace que el código sea más difícil de transferir a través de sistemas y servidores de compilación. Me gustaría saber si alguien sabe por qué ANDROID_HOME no funciona y qué hacer para que funcione. Agregué este poco de información a la pregunta.
Budius

Te sugiero que publiques en esta comunidad de Google+. plus.google.com/communities/114791428968349268860 Es una comunidad oficial de Google. Por lo general, el equipo de Google responde rápidamente.
Gabriele Mariotti el

Sí, los intentaré. ¡Gracias!
Budius el

2
@Budius Tuve un caso similar con el mensaje de error. La solución fue agregar el settings.gradlearchivo a la carpeta del proyecto.
JJD

Respuestas:


94

He resuelto el problema. Esto funciona para mi:

En

/ my_current_project /

Creé un archivo llamado local.properties y lo puse dentro

sdk.dir = / my_current_path_to / sdk

En la consola necesito hacer

establecer ANDROID_HOME = / my_current_path_to / sdk

Espero que esto ayude.


8
No soluciona el problema porque los archivos local.properties deben ser "Locales" y no bajo control de versiones. (El mismo problema que Budius: quiero que este archivo local.properties en mi computadora portátil cree una compilación durante el desarrollo, ¡pero no quiero este archivo en mi máquina de compilación porque la ruta sdks no es la misma!)
Tobliug

77
Al menos en Windows funcionó después de la cadena de barra invertida sdk.dir = D: \\ Soft \\ adt-bundle-windows-x86_64-20140702 \\ sdk
Cheburek

@Tobulug: puede controlar qué archivos bajo control de versiones y no agregar o anular la selección de los archivos locales
sivi

Usando exportar en lugar de configurar, arréglalo.
AugustoL

1
el conjunto estaba mal, yo uso exportar . Pero de esta manera, si exporta esta variable, no necesita el archivo local.properties en su carpeta Projekt. Para mantener esta configuración en cada reinicio, agregue export-commad a su ~ / .bashrc
suther el

52

En OSX , IntelliJ no recogerá las variables de entorno que establezca en su .bash_profile o .bash_rc, etc.

Pruebe esto, sustituyendo el valor de su propia ubicación sdk:

launchctl setenv ANDROID_HOME /usr/local/opt/android-sdk

Luego reinicia IntelliJ y Bob es tu tío.

Aquí hay una referencia al problema, en general: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/


44
FYI esta solución es para osx.
Matthew Daumen

44
Sí, trabajó para mí en elcapitan. launchctl setenv ANDROID_HOME ~/Library/Android/sdk
agmcleod

2
O simplemente puede representar las variables de entorno como launchctl setenv ANDROID_HOME $ANDROID_HOMEy launchctl setenv JAVA_HOME $JAVA_HOME
Vagif

Solo para su información, para OSX, esta solución también ayuda para la construcción de la línea de comandos a través de gradle, cuando se produce el mismo error mientras usa un shell que no sea bash (zsh, por ejemplo). Simplemente ejecute este comando y reinicie su ventana de terminal.
interrumpir el

30

En mi caso settings.gradlefaltaba.

Guarde el archivo y colóquelo en la carpeta de nivel superior de su proyecto, incluso puede copiarlo desde otro proyecto también.

Referencia de captura de pantalla:

ingrese la descripción de la imagen aquí

Espero que esto te ahorre tiempo.


O alguien no agregó su submódulo al archivo settings.gradle. Tenía un junior en nuestro equipo que no hizo esto después de agregar un submódulo. No estoy seguro de cómo está configurado su IntellIJ, pero esto desperdició una cantidad no trivial de mi tiempo.
Stevers

25

Esto funciona para mi:

$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew

1
también puede agregar esta línea de "exportación" anterior a su ~ / .bashrc o ~ / .bash_profile para que sea permanente incluso después de reiniciar.
suther

19

El complemento Android Gradle todavía está en versión beta y esto simplemente puede ser un error. Para mí, configurar ANDROID_HOME funciona, pero es posible que tengamos versiones diferentes (intente nuevamente con la versión más reciente y avíseme si funciona o no).

También vale la pena configurar la variable de entorno ANDROID_SDK y ANDROID_HOME.

He visto problemas con esto en algunas máquinas, por lo que creamos propiedades locales en esos casos; también he notado que la última versión de Android Studio creará este archivo para usted y completará la propiedad sdk.dir.

Tenga en cuenta que no debe verificar las propiedades locales en el control de versiones, lo hemos agregado a nuestro gitignore para que no interfiera con la transferencia del código a través de los sistemas que legítimamente identificó como un posible problema.


2
Definir ANDROID_SDK no hizo nada por mí.
Heath Borders

¿Qué versión de Gradle y el complemento de Android está utilizando y tiene un archivo local.properties?
ZoFreX

2
agregar sdk.dir=/path/to/android/sdkfuncionó para mí. Estoy corriendo gradle como parte de un proyecto creado con IntelliJ 13.0.2
Heath Borders

Parece que este es un error de IntelliJ. youtrack.jetbrains.com/issue/IDEA-119361
Heath Borders

También puede haber un error en IntelliJ o Android Studio, pero la pregunta original era sobre el uso de Gradle desde la línea de comandos, que parece tener su propio error (puede o no estar relacionado con el problema que está viendo). Editar: Además, en mi sistema IntelliJ no hereda las variables de entorno de la línea de comandos, ¿cuál podría ser su problema?
ZoFreX

16

Por alguna razón, la secuencia de comandos de Gradle no recoge el valor de ANDROID_HOME del entorno. Intente especificarlo en la línea de comando explícitamente

$ ANDROID_HOME=<sdk location> ./gradlew

1
Algo está mal: esto funciona para ANDROID_HOME pero no funcionará para ANDROID_NDK_HOME. Tuve que usar local.properties para este último.
Andrew Smart

Esta solución alternativa no hace nada por mí (en un contenedor acoplable).
IgorGanapolsky

14

Me enfrenté al mismo problema, aunque tenía el archivo local.properties en mi módulo principal y la variable de entorno ANDROID_HOME establecida a nivel del sistema.

Lo que solucionó este problema fue cuando copié el archivo local.properties que estaba en mi módulo de proyecto principal a la raíz de todo el proyecto (es decir, el directorio padre a su módulo principal)

Intente copiar el archivo local.properties dentro de los módulos y el directorio raíz. Deberia trabajar.


1
Pensé que el archivo local.properties es generado automáticamente por el IDE. ¿Por qué la necesidad de copiar o mover este archivo manualmente a otros directorios?
IgorGanapolsky

13

Me encontré con el mismo problema al abrir un repositorio git clonado. El archivo local.properties se agrega automáticamente al archivo .gitignore, ya que es específico del entorno de compilación de cada máquina y, por lo tanto, no forma parte del repositorio.

La solución es importar el proyecto en lugar de solo abrirlo después de haberlo clonado desde git, esto obliga a Android Studio a crear el archivo local.properties específico para su máquina:

Archivo >> Importar proyecto >>


12

MAC OS X:

  1. Abre Terminal y edita el archivo:

~/.bash_profile

para agregar:

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

  1. Correr:

    source ~/.bash_profile

  2. Reinicie la Terminal y Android Studio


8

Cómo hacerlo en MAC OSX:

1) Abra la Terminal y edite: vi ~/.bash_profilesi no hay ningún archivo allí, simplemente agréguelo.

2) Agregar (cambie a SU NOMBRE DE USUARIO y agregue esto):

#Java var home: JAVA_HOME="/usr/libexec/java_home" ANDROID_HOME="/Users/<YOUR USER NAME>/Library/Android/sdk"

3) Corre source ~/.bash_profile.

4) correr echo $JAVA_HOME; echo $ANDROID_HOME;

5) Si su salida es:

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

Entonces eres bueno.

y reiniciar android studio!

Y, asegúrese de tener Java :)

java -version

Y gradle :)

gradle --version


en pensar que te estás perdiendo:export ANDROID_HOME
A Kra

1
Configuro ANDROID_HOMEy luego ejecuto source ~/.bash_profile, esto es permanente (ejecutar sourcees bueno si no desea cerrar sesión y reiniciar). En su caso, export ANDROID_HOMEdespués de reiniciar o iniciar sesión, la variable de entorno ANDROID_HOMEen mac desaparecerá.
Nimitack el


4

Esto funcionó para mí (Ubuntu):

Añadir ANDROID_HOME=/path/to/android-sdka /etc/environment.

Reiniciar.


Estuve perplejo con esto durante días y solo funcionó. Gracias Señor.
Zygro

3

en windows, configuro ANDROID_HOME = E: \ android \ adt-bundle-windows-x86_64-20131030 \ sdk Luego funciona como se espera.

Cuando esté en Linux, debe configurar sdk.dir.

El script usa dos variables diferentes.


1
Lo agregué, agregué en el archivo location.properties pero aún
tengo el

1
En Windows, asegúrese de escapar de las barras diagonales inversas en el camino. Tuve que entrar en el camino comosdk.dir=C:\\Users\\username\\AppData\\Local\\Android\\Sdk
Xsasan

2

Tengo el mismo problema, parece que el código de muestra no puede encontrar el entorno de Android, en lugar de intentar solucionarlo, solo elimino el código de muestra de settings.gradle y luego la instalación funciona bien.

después de eso solo importa el proyecto en eclipse y eso es todo :)


2

En Linux, intente ejecutar studio.sh desde un terminal y configure ANDROID_HOME en este terminal. Esto funcionó para mí.


2

Si está utilizando Windows Plantform, intente ejecutar Android Studio como administrador


1

Simplemente elimine sdk.dir dentro del archivo local.preoperties y configure la variable de entorno ANDROID_HOME . Funcionó para mi.


El IDE genera automáticamente el archivo local.properties . ¿Se supone que debe ser manipulado?
IgorGanapolsky

1

exportar ANDROID_HOME = / xxx / xxx / en shell, luego usarlo por System.env.ANDROID_HOME en el archivo gradle.

PD: no olvide las palabras clave 'exportar' para hacer que ANDROID_HOME sea global.


El exporten esta respuesta es importante tener en cuenta. Lo había ANDROID_HOMEdefinido e incluso lo estaba agregando PATH, pero si no lo hace export ANDROID_HOME, Gradle no podrá encontrarlo.
lase

1

Su archivo local.properties podría faltar. Si es así, agregue un archivo llamado 'local.properties' dentro de /local.properties y proporcione la ubicación sdk de la siguiente manera.

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


1

He configurado ANDROID_HOME = [PATH_OF_MY_ANDROID_SDK] en mi variable de entorno. Esa solución me funciona.


0

Acabo de resolver exactamente el mismo problema agregando ANDROID_HOME como una variable de todo el sistema. En Ubuntu debe estar en / etc / profile o en un archivo de script de shell en /etc/profile.d/

Luego cierre sesión e inicie sesión nuevamente, ahora Gradle debería reconocer la variable ANDROID_HOME.


0

Me encontré con un problema similar. De alguna manera, no tenía una carpeta de compilación en mi proyecto. Al copiar esta carpeta de otro proyecto a mi proyecto con el que estaba teniendo un problema, esto solucionó este problema.



0

soluciones:

1 agregue "sdk.dir = path_of_sdk"

2 ejecute gradlew con la variable evn como la siguiente:

$ ANDROID_HOME = ruta_de_sdk ./gradlw


0

Dijiste que versionar local.properties te crea problemas. He pirateado un script que utiliza la herramienta de línea de comandos de Android para actualizar el archivo local.properties en las máquinas que participan en la producción. El comando del proyecto de actualización de Android , además de local.properties, produce mucha basura no deseada (al menos para mí), que es la razón de todos esos comandos rm al final del 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"

Este script es lo primero que ejecutamos en cualquier máquina nueva donde codificamos. Tiene que ejecutarse en el directorio raíz del proyecto. Por supuesto, Android Studio puede tener una forma de interfaz gráfica de usuario para manejar esto, pero no sabría que uso un editor diferente. Tampoco puedo afirmar que la solución es general, pero "Funciona para mí" (tm).


0

Me he enfrentado con el mismo problema en Ubuntu (ambos local.propertiesy ANDROID_HOMEfue agregado), pero la falla de compilación persistió. Entonces, la solución es agregar las siguientes líneas

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

directamente al studio.shguión (dentro /usr/local/android-studio/bin)

Quizás sea útil.


0

Encontré el mismo error, pero en mi caso estaba clonando un proyecto, el proyecto clonado se creó con Android API 22 que no instalé en ese momento (tenía las API 24 y 25 instaladas) ........ Tuve que descargar las herramientas SDK para API 22


0

Para ventanas:

  1. Agregue ANDROID_HOME a las variables de entorno: ANDROID_HOME = C: / Users / YOUR_USERNAME / AppData / Local / Android / sdk
  2. Agregue% ANDROID_HOME% \ platform-tools a la RUTA.

0

En mi sistema (Ubuntu 20.04 después de dos actualizaciones de versión de 19.04), los síntomas eran como si gradle(4.4.1 instalado desde los repositorios APT) ignorara ANDROID_HOMEla variable de entorno, mientras recogía el sdk.dirvalor local.propertiessi creaba una.

La razón parece haber sido ese javacomando al que se hace referencia openjdk version "11.0.7". Después de instalar el openjdk-8-jdkpaquete y update-alternatives --config javahacer que la javaversión predeterminada sea ​​8 ( "1.8.0_252"), gradlecomencé a trabajar como se esperaba.


-3

Esa pregunta es de noviembre de 2013 (mientras Android Studio todavía estaba en modo de Vista previa del desarrollador),

Actualmente (AS v2.2, agosto de 2016) durante la instalación, AS solicita elegir la carpeta SDK (o instalar en su valor predeterminado) y se aplica automáticamente a cualquier proyecto que esté abriendo.

Eso significa que cualquier posible solución o solución es irrelevante ya que el problema ya no es reproducible.


Eso es incorrecto Actualmente estoy tratando de resolver el mismo problema, aún sin suerte, probé muchas posibles soluciones publicadas aquí.
AndroidDev
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.