Gradle, Android и расположение Android HOME SDK

edit: (aug-2016)

этот вопрос с ноября 2013 года (в то время как Android Studio все еще находилась в режиме предварительного просмотра разработчика),

В настоящее время (как v2.2, Aug-2016) во время установки AS просит выбрать папку SDK (или установить по умолчанию), и она автоматически применяется к тому, какой проект вы открываете.

это означает, что любое возможное обходное решение или исправление не имеет значения, поскольку проблема не воспроизводима больше.

исходный вопрос:

у нас есть этот проект с несколькими модулями, которые уже настроены и правильно выполняются на другом компьютере разработчика с помощью оболочки. Я клонировал полные подмодули git в свою машину.

ниже это прямая печать моей командной строки:

$ ./gradlew

FAILURE: Build failed with an exception.

* Where:
Build file '/home/budius/project_name/ActionBar-PullToRefresh/library/build.gradle' line: 1

* What went wrong:
A problem occurred evaluating project ':ActionBar-PullToRefresh:library'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.378 secs

$ echo $ANDROID_HOME
/home/budius/Applications/android-studio/sdk
$ 

Итак,как вы можете видеть, ANDROID_HOME есть. Чего еще они хотят? Что здесь не так?

работает на Ubuntu 13.04

edit:

Я уже создал локальный.файл свойств с sdk.dir=<path> на корне проекта, и он работает. Но это затрудняет перенос кода между системами n build server, поэтому вопрос все еще открыт.

кто-нибудь знает, почему ANDROID_HOME не работает и что делать, чтобы заставить его работать?

28 ответов


Я решил проблему. Это работает для меня:

на

/ my_current_project/

Я создал файл с названием местные.свойства и поставить внутри

sdk.dir=/my_current_path_to / sdk

в консоли мне нужно сделать

установить ANDROID_HOME= / my_current_path_to / sdk

надеюсь, что это помогает.


на OSX, IntelliJ не будет подбирать переменные среды, которые вы установили в своем .bash_profile или .bash_rc и т. д...

попробуйте это, подставляя значение вашего собственного местоположения SDK:

launchctl setenv ANDROID_HOME /usr/local/opt/android-sdk

затем перезапустите IntelliJ, и Боб - ваш дядя.

вот ссылка на проблему, изложенную в более общем виде: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/


в моем случае settings.gradle отсутствует.

сохраните файл и поместите его в папку верхнего уровня в проекте, даже можно скопировать из другого проекта.

скриншот ссылка:

enter image description here

надеюсь, это сэкономит ваше время.


это работает для меня:

$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew

плагин Gradle в Android все еще находится в бета-версии, и это может быть просто ошибка. Для меня настройка ANDROID_HOME работает, но мы можем быть в разных версиях (повторите попытку с самой последней версией и дайте мне знать, работает ли она или нет).

также стоит установить переменную среды ANDROID_SDK, а также ANDROID_HOME.

Я видел проблемы с этим на некоторых машинах, поэтому мы создаем локальные.свойства в тех случаях, - я также заметил, что последний версия Android Studio создаст этот файл для вас и заполнит sdk.собственность реж.

обратите внимание, что вы не должны проверять local.свойства в управление версиями мы добавили его в наш gitignore, чтобы он не мешал переносу кода через системы, которые вы по праву определили как потенциальную проблему.


по какой-либо причине скрипт gradle не получает значение ANDROID_HOME из среды. Попробуйте указать его в командной строке явно

$ ANDROID_HOME=<sdk location> ./gradlew

Я столкнулась с той же проблемой, хотя у меня был местный.файл свойств в моем основном модуле и переменная среды ANDROID_HOME установлены на системном уровне.

что исправило эту проблему, когда я скопировал локальный.файл свойств, который был в моем основном модуле проекта до корня всего проекта (i.e родительский каталог для вашего основного модуля)

попробуйте скопировать местные.файл свойств внутри модулей и корневой каталог. Должен работать.


Я столкнулся с той же проблемой при открытии клонированного репозитория git. Местный житель.файл свойств автоматически добавляется в файл .файл gitignore, поскольку он специфичен для среды сборки каждой машины и поэтому не является частью РЕПО.

решение состоит в том, чтобы импортировать проект, а не просто открывать его после того, как вы клонировали его из git, это заставляет Android studio создавать локальный.файл свойств, специфичный для вашей машины:

Файл >> Импорт Проекта >>


как это сделать на MAC OSX:

1) откройте терминал и отредактируйте: vi ~/.bash_profile Если там нет файла, просто добавьте его.

2) Добавить (изменить имя пользователя и добавить это):

#Java var home: JAVA_HOME="/usr/libexec/java_home" ANDROID_HOME="/Users/<YOUR USER NAME>/Library/Android/sdk"

3) Run source ~/.bash_profile.

4) Run echo $JAVA_HOME; echo $ANDROID_HOME;

5) Если ваш вывод:

/usr/libexec/java_home /Users/<YOUR USER NAME>/Library/Android/sdk

Итак, Вы хороши.

и перезапустите Android studio!

и, Убедитесь, что у вас есть Java :)

java -version

и gradle:)

gradle --version


MAC OSX:

  1. откройте терминал и отредактируйте файл:

~/.bash_profile

добавить:

export ANDROID_HOME=~/Library/Android/sdk export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools

  1. Run:

    source ~/.bash_profile

  2. перезагрузите терминал и Android Studio


копировать местные.свойства в корневую папку и запустите снова.


это сработало для меня (Ubuntu):

добавить ANDROID_HOME=/path/to/android-sdk до /etc/environment.

перезагрузка.


в Windows, я установил ANDROID_HOME=е:\\андроид ADT пакет-окна-архитектуру x86_64-20131030\SDK для Тогда он работает как ожидалось.

когда в Linux вам нужно установить sdk.dir.

скрипт использует две различные переменные.


У меня такая же проблема, кажется, пример кода не может найти среду android, вместо этого, чтобы попытаться исправить, что я просто удаляю пример кода из настроек.gradle, а затем установка идет нормально.

после этого просто импортируйте проект в eclipse, и все :)


в Linux попробуйте запустить studio.sh из терминала и установите ANDROID_HOME в этом терминале. Это сработало для меня.


просто удалить sdk.реж.--2--> внутри локальной.файл preoperties и установите ANDROID_HOME переменные среды . У меня получилось.


экспорт ANDROID_HOME=/xxx/ xxx / в оболочке, а затем использовать его системой.env.ANDROID_HOME в файле gradle.

PS: Не забудьте ключевые слова "экспорт", чтобы сделать ANDROID_HOME глобальным.


локальный.файл свойств может отсутствовать. Если это так, добавьте файл с именем " local.свойства " внутри / локально.свойства и укажите расположение sdk следующим образом.

sdk.dir=C:\Users\ \ AppData\Local\Android\Sdk


Если вы используете Windows plantform, попробуйте запустить Android Studio от имени администратора


Я только что решил ту же проблему, добавив ANDROID_HOME в качестве системной переменной. В Ubuntu он должен быть в /etc / profile или в файле сценария оболочки в /и т. д./профиль.d/

затем выйдите из системы и снова войдите в систему, теперь Gradle должен распознать переменную ANDROID_HOME.


Я столкнулся с аналогичной проблемой. Так или иначе, у меня не было папки build в моем проекте. Скопировав эту папку из другого проекта в мой проект, у меня возникла проблема, это исправило эту проблему.


установка Build-Tools 23.0.1 вместо 23.0.2 исправлена эта проблема для меня.


решения:

1 добавить " sdk.dir=path_of_sdk"

2 Выполните gradlew с переменной evn следующим образом:

$ANDROID_HOME=path_of_sdk ./ gradlw


Вы сказали, что управление версиями локально.свойства создают проблемы для вас. Я взломал сценарий, который использует инструмент командной строки android для обновления локального.файл свойств на компьютерах, участвующих в производстве. The проект обновления android, кроме местные.свойства производит много ненужного мусора (по крайней мере для меня) что является причиной всех этих rm команды в конце скрипт.

#!/bin/bash
scname=""
echo "${scname}: updating local properties..."
ln -fs src/main/AndroidManifest.xml
android update project -t 24 -p "$(pwd)"
echo "${scname}: ...done"
echo "${scname}: removing android update project junk ..."
rm -v project.properties
rm -v build.xml
rm -v proguard-project.txt
rm -v AndroidManifest.xml
echo "${scname}: ...done"

этот скрипт-первое, что мы запускаем на любой новой машине, где мы кодируем. Он должен быть запущен в корневом каталоге проекта. Конечно, android studio может иметь GUI-способ справиться с этим, но я не знаю, как я использую другой редактор. Я также не могу утверждать, что решение является общим, но оно "работает для меня" (tm).


я столкнулся с той же проблемой на Ubuntu(как local.properties и ANDROID_HOME был добавлен), но строить не сохраняются. Таким образом, обходной путь добавить следующие строки

export ANDROID_HOME=/home/<user>/Android/Sdk export PATH=$PATH:/home/<user>/Android/Sdk/tools

непосредственно studio.sh скрипт (внутри /usr/local/android-studio/bin)

может быть, это будет полезно.


Я столкнулся с той же ошибкой, но в моем случае я клонировал проект, клонированный проект был построен с Android API 22, который я не устанавливал в то время(у меня был установлен API 24 и 25)........поэтому мне пришлось загрузить инструменты sdk для API 22


Для Windows:

  1. добавить ANDROID_HOME в переменные среды: ANDROID_HOME = C:/Users/YOUR_USERNAME/AppData/Local/Android/sdk
  2. добавить в путь %ANDROID_HOME%\platform-tools.

этот вопрос с ноября 2013 года (в то время как Android Studio все еще находилась в режиме предварительного просмотра разработчика),

В настоящее время (как v2.2, Aug-2016) во время установки AS просит выбрать папку SDK (или установить по умолчанию), и она автоматически применяется к тому, какой проект вы открываете.

Это означает, что любое возможное обходное решение или исправление не имеет значения, поскольку проблема больше не воспроизводима.