11

我使用maven-android-plugin版本 3.3.2。当我尝试构建我的 android 项目时,出现以下异常:

org.apache.maven.plugin.MojoExecutionException: 找不到 Android SDK 路径。您可以在 pom 文件的插件配置部分中使用<sdk><path>...</path></sdk><properties><android.sdk.path>...</android.sdk.path></properties>在命令行中使用-Dandroid.sdk.path=...或通过设置环境变量来配置它ANDROID_HOME

但是环境变量ANDROID_HOME设置为 android sdk 路径。

你能帮我么?

4

4 回答 4

26

听起来,虽然 env var 在您运行的 shell 上可用,但在 Maven 运行的 shell 上不可用。

无论如何,最好不要解决它,而是使用属性集创建一个设置文件。一个最小的看起来像这样(写下我的头顶,因为我现在没有可用的设置文件):

<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

于 2013-10-02T11:20:23.333 回答
6

从文档

您可以使用或在命令行中使用或通过设置环境变量在文件的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-12T13:04:01.090 回答
2

是的,我解决了这个问题。通过在 ~/.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级别

于 2013-10-26T12:37:55.603 回答
1

最简单的方法是 export ANDROID_HOME=pathToAndroidSdk 直接从目标部署存储库进行设置。

仅为当前 shell 和从当前 shell 启动的所有进程设置变量。

于 2017-12-22T01:38:17.897 回答