我正在开发一个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中不起作用。
答案 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 选项卡并选择“新建”, 然后插入:
它可以工作,这样只有在为所选项目启动maven配置时才设置变量,并且您还可以为不同的项目设置不同的路径,而不需要更改.bashrc。它也适用于Windows。
答案 6 :(得分: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 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