it-roy-ru.com

Gradle, Android и местоположение Android_HOME SDK

Правка: (август-2016)

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

В настоящее время (AS v2.2, август 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

Правка:

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

Кто-нибудь знает, почему Android_HOME не работает и что нужно сделать, чтобы он работал?

145
Budius

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

В

/ My_current_project /

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

sdk.dir =/my_current_path_to/SDK

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

set Android_HOME =/my_current_path_to/sdk

Надеюсь это поможет.

93
u53r

В 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/

49
Matthew Daumen

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

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

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

 enter image description here

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

26
Hiren Patel

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

$ export Android_HOME=/path_to_sdk/
$ ./gradlew
24
giopromolla

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

Также стоит установить переменную окружения Android_SDK и Android_HOME.

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

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

19
ZoFreX

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

$ Android_HOME=<sdk location> ./gradlew
15
Andrew Marshall

Я столкнулся с той же проблемой, хотя у меня в главном модуле был файл local.properties, а переменная среды Android_HOME установлена ​​на системном уровне. 

Что исправило эту проблему, когда я скопировал файл local.properties, который находился в моём основном модуле проекта, в корень всего проекта (т. Е. Родительский каталог вашего основного модуля)

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

14
joecizac

Я столкнулся с той же проблемой при открытии клонированного git-репозитория. Файл local.properties автоматически добавляется в файл .gitignore, так как он специфичен для среды сборки каждого компьютера и поэтому не является частью репо.

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

Файл >> Импортировать проект >> 

13
Bulwinkel

MAC OS X:

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

~/.bash_profile

добавить:

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

  1. Бежать:

    source ~/.bash_profile

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

9
Javier Armendariz

Как это сделать на 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) Запустите source ~/.bash_profile.

4) Запустите echo $Java_HOME; echo $Android_HOME;

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

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

Так что ты в порядке.

и RESTART Android студия!

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

Java -version

И градл :)

gradle --version

8
Nimitack

Скопируйте local.properties в корневую папку и запустите снова.

6
Santiago Medina Chaverra

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

Добавьте Android_HOME=/path/to/Android-sdk к /etc/environment.

Перезагружать.

4
everyman

в windows я устанавливаю Android_HOME = E:\Android\adt-bundle-windows-x86_64-20131030\sdk Тогда все работает как положено. 

В Linux вам нужно установить sdk.dir. 

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

3
richard

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

2
Megoc

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

2
Naren

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

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

2
Guillermo Gutiérrez

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

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

1
kinath_ru

Просто удалите sdk.dir внутри файла local.properties и установите переменную окружения Android_HOME . Это сработало для меня.

1
PraveenMax

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

PS: не забудьте ключевые слова "export", чтобы сделать Android_HOME глобальным.

1
Jindowin

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

0
Horatio

Я столкнулся с той же проблемой в 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)

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

0
Lukas

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

#!/bin/bash
scname="$0"
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 способ справиться с этим, но я бы не знал, так как использую другой редактор. Я также не могу утверждать, что решение является общим, но оно «работает для меня» (тм). 

0
Mali Remorker

решения:

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

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

$ Android_HOME = path_of_sdk ./gradlw

0
RoFF

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

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

0
Joe3112

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

0
TheBetterJORT

Для Windows:

  1. Добавьте Android_HOME в переменные среды: Android_HOME = C:/Users/YOUR_USERNAME/AppData/Local/Android/sdk 
  2. Добавьте% Android_HOME%\platform-tools в PATH.
0
J. Jerez

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

0
Didi Pepple