10

我正在开发一个 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 -> [Help 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 中不起作用。

4

9 回答 9

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 以匹配安装的库。

于 2013-04-22T21:04:51.923 回答
5

如果您使用的是 Linux,则导出ANDROID_HOMEin.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

于 2013-06-12T20:00:30.097 回答
4

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

于 2012-07-10T15:14:44.813 回答
3

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

于 2013-05-10T19:45:05.513 回答
3

在你的命令行上,运行:

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

其他方法都没有真正奏效。(设置ANDROID_HOME不做任何事情)

于 2013-08-21T20:51:43.767 回答
1

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

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

  • ANDROID_HOME 改成 name 字段
  • 您的 sdk 的路径到值字段

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

于 2013-05-26T08:18:47.423 回答
1

从文档

您可以使用或在命令行中使用或通过设置环境变量在文件的android-maven-plugin配置部分配置它。pom.xml<sdk><path>...</path></sdk><properties><android.sdk.path>...</android.sdk.path></properties>-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"

于 2014-10-12T12:42:00.903 回答
0

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

于 2012-07-10T20:56:24.883 回答
0

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

与内容;

sdk.dir=c:\\path\\to\\android-sdk
于 2012-11-20T10:26:06.020 回答