我使用maven-android-plugin
版本3.3.2。当我尝试构建我的android项目时,我有以下异常:
org.apache.maven.plugin.MojoExecutionException
:找不到Android SDK路径。您可以使用<sdk><path>...</path></sdk>
或<properties><android.sdk.path>...</android.sdk.path></properties>
在pom文件的插件配置部分中配置它,或者使用-Dandroid.sdk.path=...
或通过设置环境变量ANDROID_HOME
在命令行中配置它
但是环境变量ANDROID_HOME
设置为android sdk路径。
你能帮我么?
听起来,虽然env var在您运行的shell上可用,但它在Maven运行的shell上不可用。
无论如何,最好使用属性集创建a settings file,而不是解决它。最小的一个看起来像这样(写下我的头顶,因为我现在没有我的设置文件):
<settings>
<profiles>
<profile>
<id>android-settings</id>
<properties>
<android.sdk.path>/path/to/android/sdk</android.sdk.path>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>android-settings</activeProfile>
</activeProfiles>
</settings>
将它扔进你的.m2
文件夹或通过Eclipse在Window
-> Preferences...
-> Maven
-> User Settings
中设置它。
从文档中
您可以使用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
作为第三个选项,您可以从命令行设置SDK,将参数传递给Maven:
mvn clean install -Dandroid.sdk.path="C:\\Program Files (x86)\\Android\\android-sdk"
是的,我解决了这个问题。通过在〜/ .m2文件夹中添加settings.xml文件
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<id>android</id>
<properties>
<android.sdk.path>
ANDROID SDK PATH
</android.sdk.path>
</properties>
</profile>
</profiles>
<activeProfiles> <!--make the profile active all the time -->
<activeProfile>android</activeProfile>
</activeProfiles>
</settings>
并打开你的android-bootstrap-master应用程序并打开pom.xml文件并检查以下行
<sdk>
<platform>16</platform>
</sdk>
16是当前安装的或不是sdk级别
最简单的方法是从目标部署存储库中设置export ANDROID_HOME=pathToAndroidSdk
。
变量将仅为当前shell设置,所有进程从当前shell启动。