【问题标题】:android maven plugin does not get ANDROID_HOME env variable in Eclipseandroid maven插件在Eclipse中没有得到ANDROID_HOME env变量
【发布时间】:2012-07-10 02:06:33
【问题描述】:

我正在开发一个 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 路径。为什么 android-maven-plugin 在 eclipse 中没有获取 env 变量?

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

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

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

【问题讨论】:

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


【解决方案1】:

确保您的 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 来匹配安装的库。

【讨论】:

    【解决方案2】:

    如果您使用的是 Linux,则导出 .bashrc 中的 ANDROID_HOME 可能不起作用。

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

    对我来说,只有当我像这样在 /etc/environment 文件中导出 ANDROID_HOME 时它才有效:

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

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

    您只需注销,然后再次登录,环境变量就会在系统范围内应用。或者,您可以在执行此操作之前在本地对其进行测试:$source /etc/environment

    【讨论】:

    • 通常不要在 .bashrc 中设置这样的环境(即你想从桌面应用程序中使用)——这就是它不适合你的原因。例如,在 Debian 中,我最终将其确定为从 .xsessionrc 为系统范围的 ENV 采购一个 .bash_env 文件 - 这是在登录时获得 once 的,如果您需要,所有导出都由其他终端继承,并且可用于桌面应用程序。如果您希望这些值在登录 shell 中也可用(例如 ssh'ing in),您可以从您的 .bash_profile 中获取相同的 .bash_env(在登录时不获取并且对桌面 ENV 没有影响)。
    • 在 linux Env​​ 中无需注销,只需执行 source .bash_profile 即可。在 MAC 中:源 .profile .
    【解决方案3】:

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

    【讨论】:

    • 我做了“导出 ANDROID_HOME=sdk 的路径”并将其添加到 PATH。我应该做些什么吗?谢谢你的回答。
    • 导出后如何添加到PATH中,有没有其他方法添加。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      在你的命令行上,运行:

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

      其他方法都没有真正奏效。 (设置ANDROID_HOME 没有任何作用)

      【讨论】:

        【解决方案6】:

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

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

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

        它起作用了,这样只有在你为选定的项目启动 maven 配置时才会设置变量,你也可以为不同的项目设置不同的路径,你不需要改变你的 .bashrc。它也适用于 Windows。

        【讨论】:

          【解决方案7】:

          来自文档

          您可以在pom.xml 文件的pom.xml 配置部分中使用&lt;sdk&gt;&lt;path&gt;...&lt;/path&gt;&lt;/sdk&gt;&lt;properties&gt;&lt;android.sdk.path&gt;...&lt;/android.sdk.path&gt;&lt;/properties&gt; 或在命令行中使用-Dandroid.sdk.path=... 或通过设置环境变量ANDROID_HOME 对其进行配置。

          解决方案 1

          我已经定义了一个名为 ANDROID_SDK(而不是 ANDROID_HOME)的 Android SDK 系统变量,并以这种方式在我的 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

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

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

          【讨论】:

            【解决方案8】:

            您需要在 Eclipse 中设置 Android Development Tools SDK Location 路径:点击 Window -> Preferences 并选择 Android。 SDK 位置可以在 Android 首选项下设置。

            【讨论】:

            • 我正在使用 m2e android 并且 sdk 位置在首选项下设置。但感谢您的回答和您的插件。
            【解决方案9】:

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

            与内容;

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

            【讨论】:

              猜你喜欢
              • 2015-05-19
              • 1970-01-01
              • 2016-11-25
              • 1970-01-01
              • 2011-11-27
              • 1970-01-01
              • 2012-09-20
              • 2014-09-23
              • 1970-01-01
              相关资源
              最近更新 更多