我工作的一个Android应用程序项目,它是一个Maven项目。 当我尝试运行的“行家安装”这是我得到:
“无法执行目标com.jayway.maven.plugins.android.generation2:Android的Maven的插件:3.1.1:产生来源项目的Android客户端上(默认生成来源):没有Android SDK中的路径可寻你可能配置它在使用POM文件插件配置部...或...或命令行使用-Dandroid.sdk.path = ...或通过设置环境变量ANDROID_HOME - > [帮助1] “
如果我硬编码我android_home路径到pom.xml的,它工作正常,但我们使用git,每个人都可能有android_home.why没有Android的Maven的插件获取环境变量在Eclipse中不同的路径?
android_home环境变量是在我的道路。 我在写的pom.xml $ {} env.ANDROID_HOME,但它仍然没有奏效。
奇怪的是,如果我使用终端(MVN安装)作为Maven的安装运行,它的作品!
其实这是对我来说相当可选问题,但我仍想知道为什么这个插件并不在Eclipse工作。
您需要创建ANDROID_HOME一个系统变量,而不是将其设置在路径中。
确保你的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管理器验证(或在你的文件系统直接检查:$ ANDROID_HOME /平台),你有SDK API 8安装。 当然,你也可以改变你的pom.xml所安装的库相匹配。
如果您使用的是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
在您的.bashrc或者任何设置的ANDROID_HOME变量的工作,但要记得该变量导出 ,以便它可以给子进程。 在这里建议的其他方法设置ANDROID_HOME将让你通过一些初步的错误,但没有ANDROID_HOME远销您的构建将在某个时候可能会失败。
在命令行上,运行:
mvn clean install -- Dandroid.sdk.path="/Applications/Android Studio.app/sdk/"
没有其他方法果然奏效。 (设置ANDROID_HOME
什么都不做)
另一种方法是将环境变量设置成pom.xml的运行配置。
去跑配置菜单中,选择用于项目的pom.xml的运行配置,并选择环境选项卡,选择“新建”,然后插入:
- ANDROID_HOME到名称字段
- 路径到SDK为价值领域
它的工作原理,并以这种方式当您启动选定工程中的Maven配置变量只能设置,你还可以设置不同的路径为不同的项目,你不需要改变你的.bashrc。 它还工作在Windows中。
从文档
你可能在配置它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
作为第三选项,您可以设置从传递一个参数的Maven命令行SDK:
mvn clean install -Dandroid.sdk.path="C:\\Program Files (x86)\\Android\\android-sdk"
您需要设置Android的开发工具SDK位置的路径在Eclipse:点击窗口 - >首选项,并选择Android系统。 该SDK的位置可以在Android的喜好来设置。
创建一个名为local.properties在项目的根目录下的文件。
随着内容;
sdk.dir=c:\\path\\to\\android-sdk