2012-07-10 21 views
10

estoy trabajando en un proyecto de aplicación de Android y es un proyecto de Maven. cuando intento ejecutar "maven install" esto es lo que obtengo:android maven plugin no obtiene ANDROID_HOME env variable en Eclipse

"No se pudo ejecutar el objetivo com.jayway.maven.plugins.android.generation2: android-maven-plugin: 3.1.1: generate- fuentes (default-generate-sources) en el proyecto android-client: no se pudo encontrar la ruta del SDK de Android. Puede configurarlo en la sección de configuración del complemento en el archivo pom usando ... o ... o en la línea de comandos usando - Dandroid.sdk.path = ... o configurando la variable de entorno ANDROID_HOME -> [Ayuda 1] "

si codigo mi ruta android_home en pom.xml, funciona bien pero usamos git y todos pueden tener diferentes rutas para android_home.why does not android-maven-plugin get env variable in eclipse?

android_home env variable está en mi PATH. escribí $ {env.ANDROID_HOME} en mi pom.xml pero aún no funcionó.

curiosamente, si uso terminal (mvn install) para ejecutar como maven install, ¡funciona!

En realidad, este es un problema bastante opcional para mí, pero aún quiero saber por qué este complemento no funciona en Eclipse.

+0

¿Está utilizando M2e-android? –

+0

Estoy enfrentando el mismo problema en ubantu, ¿ha podido solucionar este problema .... más información sobre mi problema http://stackoverflow.com/questions/12532510/jenkins-maven-android-when-running-throwing -the-error-android-sdk-linux-platfor – Sam

Respuesta

4

Debe crear una variable de sistema para ANDROID_HOME, no configurarla en su RUTA.

+7

hice "exportar ANDROID_HOME = ruta del sdk" y lo agregué a la RUTA. ¿debería hacer algo más? gracias por responder. –

+0

cómo agregarlo a PATH después de exportar, ¿hay algún otro método para agregarlo? – skygeek

0

Debe configurar la ruta de ubicación del SDK de Android Development Tools en Eclipse: haga clic en Ventana -> Preferencias y seleccione Android. La ubicación del SDK se puede establecer en las preferencias de Android.

+0

estoy usando m2e, la ubicación de android y sdk está establecida en preferences.but gracias por la respuesta, y su complemento. –

0

Cree un archivo llamado local.properties en su directorio raíz de su proyecto.

Con los contenidos;

sdk.dir=c:\\path\\to\\android-sdk 
+0

Esto no funcionó para mí. – Isuru

5

asegurarse de que su instalación de Android SDK contiene las bibliotecas de la misma versión API se ha configurado en su pom.xml.

Por ejemplo, si su configuración XML se parece a:

<plugin> 
    <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
    <artifactId>android-maven-plugin</artifactId> 
    ... 
    <configuration> 
     <sdk> 
      <path>${env.ANDROID_HOME}</path> 
      <platform>8</platform> 
     </sdk> 
     ... 
    </configuration> 
</plugin> 

entonces usted debe verificar con el Administrador de Android SDK (o comprobar directamente en su sistema de archivos: $ ANDROID_HOME/plataformas) que tiene SDK API 8 instalado. Por supuesto, también puede cambiar su pom.xml para que coincida con la biblioteca instalada.

3

Configurando una variable ANDROID_HOME en su .bashrc o lo que sea que funcione, pero recuerde exportar esa variable para que esté disponible para los subprocesos. Configurar ANDROID_HOME con los otros métodos sugeridos aquí le permitirá superar algunos errores iniciales, pero sin ANDROID_HOME exportado, su compilación probablemente fallará en algún momento.

1

Otra forma es establecer la variable de entorno en la configuración de ejecución para pom.xml.

Vaya al menú Ejecutar configuraciones, seleccione la configuración Ejecutar utilizada para su proyecto pom.xml y seleccionar el Medio Ambiente pestañas y seleccionar "Nuevo", a continuación, insertar:

  • ANDROID_HOME en Nombre del campo
  • ruta a su SDK en campo de valor

Funciona, y en ese La Variable se establece solo cuando se inicia la configuración de administrador para el proyecto seleccionado, y también se puede establecer una ruta diferente para diferentes proyectos, y no es necesario cambiar su .bashrc. Funciona también en Windows.

5

Si está utilizando Linux, exportar el ANDROID_HOME en el .bashrc puede no funcionar.

export ANDROID_HOME=/home/toro/etc/android-sdk-linux 

Para mí sólo funciona cuando la exportación ANDROID_HOME en el archivo /etc/environment así:

ANDROID_HOME=/home/toro/etc/android-sdk-linux 

tiene que reiniciar el ordenador para conseguir que funcione.

Simplemente tiene que cerrar sesión y volver a iniciar sesión para que la variable de entorno se aplique en todo el sistema. Opcionalmente, sólo podría abastecerse localmente para probarlo antes de hacer eso: $source /etc/environment

+0

En general, no configure entornos como este (es decir, que desee utilizar desde las aplicaciones de escritorio) en .bashrc; por eso no funcionó para usted. En Debian, por ejemplo, finalmente me limité a obtener un archivo .bash_env para ENVs de todo el sistema de .xsessionrc; esto se obtiene * una vez * al iniciar sesión y todas las exportaciones son heredadas por otros terminales si lo necesita y también están disponibles para aplicaciones de escritorio. Si desea que estos valores también estén disponibles en los shells de inicio de sesión (por ejemplo, ssh'ing in), debe obtener el mismo archivo .bash_env de .bash_profile (que no se obtiene al iniciar sesión y no tiene ningún impacto en las ENV de escritorio). – RichieHH

+0

no es necesario cerrar la sesión en Linux Env, solo haga fuente .bash_profile. en MAC: fuente .profile. – issamux

3

en su línea de comandos, ejecute:

mvn clean install -- Dandroid.sdk.path="/Applications/Android Studio.app/sdk/"

ninguno de los otros métodos realmente funcionó. (Ajuste ANDROID_HOME no hace nada)

1

De la documentación

Es posible configurarlo en la sección de configuración en el archivo de android-maven-pluginpom.xml usando <sdk><path>...</path></sdk> o <properties><android.sdk.path>...</android.sdk.path></properties> o en línea de comandos usando -Dandroid.sdk.path=... o por el entorno de ajuste variable ANDROID_HOME.

Solución 1

he definido una variable de sistema Android SDK llamada ANDROID_SDK (en lugar de ANDROID_HOME) y se hace referencia en mi pom.xml esta manera:

<groupId>...</groupId> 
    <artifactId>...</artifactId> 
    <version>...</version> 
    <packaging>apk</packaging> 
    <name>...</name> 
    <description>...</description> 

    <properties> 
    <android.sdk.path>${env.ANDROID_SDK}</android.sdk.path> 
    ... 
    </properties> 

Solución 2

Como alternativa, también puede configurarlo en la sección android-maven-plugin:

<plugin> 
<extensions>true</extensions> 
<groupId>com.jayway.maven.plugins.android.generation2</groupId> 
<artifactId>android-maven-plugin</artifactId> 
<version>${android-maven-plugin.version}</version> 
<configuration> 
    <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> 
    <assetsDirectory>${project.basedir}/assets</assetsDirectory> 
    <resourceDirectory>${project.basedir}/res</resourceDirectory> 
    <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> 
    <sdk> 
    <android.sdk.path>${env.ANDROID_SDK}</android.sdk.path> 
    <platform>16</platform> 
    </sdk> 
    <undeployBeforeDeploy>true</undeployBeforeDeploy> 
</configuration> 
</plugin> 

Solución 3

Como tercera opción se puede establecer el SDK desde la línea de comandos que pasa un argumento a Maven:

mvn clean install -Dandroid.sdk.path="C:\\Program Files (x86)\\Android\\android-sdk"

Cuestiones relacionadas