Плагин maven для Android: нет пути для Android SDK.
Я использую версию maven-android-plugin
3.3.2. Когда я пытаюсь создать свой проект андроида, у меня есть следующее исключение:
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.
Можете ли вы мне помочь?
Ответы
Ответ 1
Похоже, в то время как env var доступен в оболочке, которую вы запускаете, она недоступна в оболочке Maven.
Независимо от этого, вместо того, чтобы обойти его, лучше создать файл настроек с набором свойств. Минимальный будет выглядеть так (сбрасывая верхнюю часть моей головы, так как у меня нет доступных файлов настроек):
<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
.
Ответ 2
Из документации
Вы можете настроить его в разделе конфигурации 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"
Ответ 3
Да, я решил эту проблему. Добавляя файл settings.xml в папку ~/.m2
<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-загрузки и откройте файл pom.xml и проверьте следующую строку
<sdk>
<platform>16</platform>
</sdk>
16 - установленный или не установленный уровень sdk
Ответ 4
Самый простой способ - установить
export ANDROID_HOME=pathToAndroidSdk
прямо из целевого развертывания репозитория.
Переменная будет установлена только для текущей оболочки и всех процессов, запущенных из текущей оболочки.