android maven插件在Eclipse中没有得到ANDROID_HOME env变量

时间:2012-07-10 14:50:37

标签: android eclipse maven environment-variables maven-plugin

我正在开发一个Android应用程序项目,它是一个Maven项目。 当我尝试以“maven install”运行时,这就是我得到的:

“无法在项目android-client上执行目标com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.1.1:generate-sources(default-generate-sources):没有Android SDK路径您可以在pom文件的插件配置部分中使用...或...或在命令行上使用-Dandroid.sdk.path = ...或通过设置环境变量ANDROID_HOME - >来配置它。 [帮助1]“

如果我将我的android_home路径硬编码到pom.xml中,它工作正常,但我们使用git,每个人可能有不同的路径android_home.why没有android-maven-plugin在eclipse中获取env变量?

android_home env变量在我的PATH中。 我在我的pom.xml中写了$ {env.ANDROID_HOME},但它仍然没有用。

奇怪的是,如果我使用终端(mvn install)作为maven install运行,它可以工作!

实际上这对我来说是非常可选的问题,但我仍然想知道为什么这个插件在Eclipse中不起作用。

9 个答案:

答案 0 :(得分:5)

确保您的Android SDK安装包含您在pom.xml上配置的相同API版本的库

例如,如果您的配置XML如下所示:

<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>

然后您应该使用Android SDK Manager(或直接检查您的文件系统:$ ANDROID_HOME / platforms)验证您安装了SDK API 8。当然,您也可以更改您的pom.xml以匹配安装的库。

答案 1 :(得分:5)

如果您使用的是Linux,导出ANDROID_HOME中的.bashrc可能无效。

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

对我而言,只有当我在ANDROID_HOME文件中导出/etc/environment时才会有效:

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

您必须重新启动计算机才能使其正常工作。

您只需注销,然后重新登录,即可在系统范围内应用环境变量。或者,您可以在执行此操作之前在本地获取它以进行测试:$source /etc/environment

答案 2 :(得分:4)

您需要为ANDROID_HOME创建一个系统变量,而不是在PATH中设置它。

答案 3 :(得分:3)

在.bashrc中设置ANDROID_HOME变量或其他任何可行的变量,但请记住导出该变量,以便子进程可以使用它。使用此处建议的其他方法设置ANDROID_HOME将引导您完成一些初始错误,但如果没有导出ANDROID_HOME,您的构建可能会在某些时候失败。

答案 4 :(得分:3)

在命令行上运行:

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

其他方法都没有真正起作用。 (设置ANDROID_HOME没有做任何事情)

答案 5 :(得分:1)

另一种方法是将环境变量设置为pom.xml的运行配置。

转到“运行配置”菜单,选择用于项目pom.xml的运行配置,然后选择 Environment 选项卡并选择“新建”, 然后插入:

  • ANDROID_HOME到名称字段
  • 您的sdk进入值字段的路径

它可以工作,这样只有在为所选项目启动maven配置时才设置变量,并且您还可以为不同的项目设置不同的路径,而不需要更改.bashrc。它也适用于Windows。

答案 6 :(得分:1)

来自文档

您可以使用android-maven-pluginpom.xml<sdk><path>...</path></sdk>文件的<properties><android.sdk.path>...</android.sdk.path></properties>配置部分中进行配置,也可以使用-Dandroid.sdk.path=...在命令行中进行配置,或者通过设置进行配置环境变量ANDROID_HOME

解决方案1 ​​

我已经定义了一个名为ANDROID_SDK的Android SDK系统变量(而不是ANDROID_HOME)并以pom.xml方式引用它:

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

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

解决方案2

作为替代方案,您也可以在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>

解决方案3

作为第三个选项,您可以从命令行设置SDK,将参数传递给Maven:

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

答案 7 :(得分:0)

您需要在Eclipse中设置Android开发工具SDK位置路径:点击Window - &gt;首选项并选择Android。可以在Android偏好设置下设置SDK位置。

答案 8 :(得分:0)

在项目的根目录中创建名为 local.properties 的文件。

有了内容;

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