Плагин для Android maven: путь Android SDK не найден
Я использую 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 ответа
Похоже, что 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
,
Из документации
Вы можете настроить его в 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"
Да, я решил эту проблему. Добавив файл 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-bootstrap-master, откройте файл pom.xml и проверьте следующую строку
<sdk>
<platform>16</platform>
</sdk>
16 установлен на данный момент или нет уровень SDK
Самый простой способ - установитьexport ANDROID_HOME=pathToAndroidSdk
прямо из целевого репозитория развертывания.
Переменная будет установлена только для текущей оболочки и всех процессов, запущенных из текущей оболочки.