Ответ 1
Вам нужно создать системную переменную для ANDROID_HOME, а не установить ее в PATH.
Я работаю над проектом Android-приложения, и это проект Maven. когда я пытаюсь запустить "maven install", это то, что я получаю:
"Не удалось выполнить цель com.jayway.maven.plugins.android.generation2: android-maven-plugin: 3.1.1: генерировать-источники (источники по умолчанию-source) для проекта android-client: нет Android SDK path. Вы можете настроить его в разделе конфигурации плагина в файле pom, используя... или... или в командной строке, используя -Dandroid.sdk.path =... или установив переменную окружения ANDROID_HOME → [ Справка 1]"
если я жестко задаю свой путь android_home в pom.xml, он отлично работает, но мы используем git, и у каждого могут быть разные пути для android_home.why не поддерживает android-maven-plugin получить переменную env в eclipse?
android_home env переменная находится в моем PATH. Я написал ${env.ANDROID_HOME} в моем pom.xml, но он все еще не работал.
странно, если я использую терминал (mvn install) для запуска в качестве установки maven, он работает!
на самом деле это довольно необязательная проблема для меня, но все же я хочу знать, почему этот плагин не работает в Eclipse.
Вам нужно создать системную переменную для ANDROID_HOME, а не установить ее в PATH.
Убедитесь, что ваша установка Android SDK содержит библиотеки для той же версии API, которую вы настроили на вашем pom.xml.
Например, если ваша конфигурация 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 Manager (или напрямую проверить свою файловую систему: $ANDROID_HOME/platform), на которой установлен 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
Установка переменной ANDROID_HOME в вашем .bashrc или что-то еще будет работать, но не забудьте экспортировать эту переменную, чтобы она была доступна для подпроцессов. Установка ANDROID_HOME с другими предложенными здесь методами приведет к некоторым начальным ошибкам, но без экспорта ANDROID_HOME, который вы экспортировали, вероятно, произойдет некоторая ошибка.
в командной строке, запустите:
mvn clean install -- Dandroid.sdk.path="/Applications/Android Studio.app/sdk/"
Ни один из других методов не работал. (настройка ANDROID_HOME
ничего не делает)
Другой способ - установить переменную среды в конфигурацию запуска для pom.xml.
Перейдите в меню "Выполнить настройки", выберите "Запуск конфигурации", используемой для проекта pom.xml, и выберите вкладку "Среда" и выберите "Создать", затем вставьте:
Он работает, и таким образом переменная устанавливается только тогда, когда вы запускаете конфигурацию maven для выбранного проекта, и вы также можете установить другой путь для разных проектов, и вам не нужно менять свой .bashrc. Он работает и в окнах.
Из документации
Вы можете настроить его в разделе конфигурации 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"
Вам нужно установить путь определения местоположения SDK для разработчиков Android в Eclipse: нажмите "Окно" → "Настройки" и выберите "Android". Местоположение SDK можно установить в настройках Android.
Создайте файл с именем local.properties в корневом каталоге вашего проекта.
С содержимым;
sdk.dir=c:\\path\\to\\android-sdk