Gradle, Android та розташування SDK ANDROID_HOME


152

редагувати: (серпень-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>на корені проекту, і він працює. Але це робить код складніше переносити через системи n сервер побудови, тому питання все ще залишається відкритим.

Хтось знає, чому ANDROID_HOME не працює і що робити, щоб він працював?


1
Спробуйте вказати шлях до свого SDK у файлі local.properties під кореневим каталогом вашого проекту. У файлі має бути так: sdk.dir = <sdk_install_dir>
Габріеле

1
Привіт @GabrieleMariotti дякую за пропозицію. Але я вже це зробив і це працює. Але це робить код складніше переносити через системи n сервер побудови. Мені хотілося б знати, якщо хтось знає, чому ANDROID_HOME не працює і що робити, щоб він працював? Я додав цю інформацію до запитання.
Будій

Я пропоную вам опублікувати в цій G + спільноті. plus.google.com/communities/114791428968349268860 Це офіційна спільнота Google. Зазвичай команда Google відповідає швидко.
Габрієле Маріоти

так, я спробую їх. Дякую!
Будій

2
@Budius У мене був подібний випадок із повідомленням про помилку. Рішенням було додати settings.gradleфайл до папки проекту.
JJD

Відповіді:


94

Я вирішив проблему. Це працює для мене:

В

/ my_current_project /

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

sdk.dir = / my_current_path_to / sdk

У консолі мені потрібно зробити

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

Сподіваюся, це допомагає.


8
Виправлення проблеми не виправлено, оскільки файли local.properties повинні бути "Локальні", а не переглядати версії. (Та ж проблема, що і Будіус. Я хочу, щоб цей файл local.properties на моєму ноутбуці створював збірку під час розробки. Але я не хочу, щоб цей файл був у моїй машині збирання, оскільки шлях до sdks не той самий!)
Тобліг

7
Принаймні , на вікнах він працював після backslashing рядки sdk.dir = D: \\ Soft \\ ADT-пачці вікна-x86_64-20140702 \\ SDK
Чебурек

@Tobulug: ви можете контролювати, які файли знаходяться під контролем версій, а також не додавати або
скасовувати

Використання експорту замість встановлення виправити.
AugustoL

1
Набір був неправильним, я використовую експорт . Але таким чином, якщо ви експортуєте цю Змінна, вам не потрібен файл local.properties у вашій папці Projekt. Щоб зберегти це налаштування під час кожного перезавантаження, додайте команду експорту до вашої ~ / .bashrc
suther

52

На 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/


4
FYI це рішення для OSX.
Матвій Даумен

4
Так, працював для мене на елкапітані. launchctl setenv ANDROID_HOME ~/Library/Android/sdk
agmcleod

2
Або ви можете просто проксі ваші змінні середовища, як-от launchctl setenv ANDROID_HOME $ANDROID_HOMEі launchctl setenv JAVA_HOME $JAVA_HOME
Vagif

Просто FYI, для OSX це виправлення також допомагає будувати командний рядок через gradle, коли така ж помилка виникає, коли ви використовуєте оболонку, відмінну від bash (наприклад, zsh). Просто запустіть цю команду та перезапустіть вікно терміналу.
перервати

30

У моєму випадку settings.gradleвідсутня.

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

Посилання екрана:

введіть тут опис зображення

Сподіваюся, це заощадить ваш час.


Або хтось не додав ваш підмодуль у файл settings.gradle. У нашої команди був молодший, який цього не зробив після додавання підмодуля. Не впевнений, як налаштований їх IntellIJ, але це витрачало нетривіальну кількість мого часу.
Stevers

25

Це працює для мене:

$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew

1
Ви також можете додати це вищевказане "експортування" у свою ~ / .bashrc або ~ / .bash_profile, щоб зробити його постійним навіть після перезавантаження.
суть

19

Плагін Android Gradle все ще знаходиться в бета-версії, і це може бути просто помилка. Для мене налаштування ANDROID_HOME працює, але ми можемо бути в різних версіях (будь ласка, спробуйте ще раз із останньою версією та повідомте мені, працює вона чи ні).

Також варто встановити змінну середовища ANDROID_SDK, а також ANDROID_HOME.

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

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


2
Визначення ANDROID_SDK нічого не зробило для мене.
Heath Borders

Яку версію Gradle та плагін Android ви використовуєте, і у вас є файл local.properties?
ZoFreX

2
додавання sdk.dir=/path/to/android/sdkпрацював на мене. Я запускаю gradle як частину проекту, створеного за допомогою IntelliJ 13.0.2
Heath Borders

Схоже, це помилка IntelliJ. youtrack.jetbrains.com/issue/IDEA-119361
Heath Borders

Також може виникнути помилка в IntelliJ або Android Studio, але початкове питання стосувалося використання Gradle з командного рядка, який, здається, має власну помилку (може бути, а може і не пов’язаний із проблемою, яку ви бачите). Редагувати: Також у моїй системі IntelliJ не успадковує змінні середовища з командного рядка, що може бути вашою проблемою?
ZoFreX

16

З будь-якої причини сценарій gradle не набирає значення ANDROID_HOME з оточення. Спробуйте вказати це в командному рядку прямо

$ ANDROID_HOME=<sdk location> ./gradlew

1
Щось хитро - це працює для ANDROID_HOME, але не працює для ANDROID_NDK_HOME. Мені довелося використовувати local.properties для останнього.
Ендрю Смарт

Таке вирішення для мене нічого не робить (у контейнері докера).
ІгорГанапольський

14

Я зіткнувся з тією ж проблемою, хоча у своєму головному модулі був файл local.properties, а змінна середовище ANDROID_HOME встановлена ​​на системному рівні.

Що вирішило цю проблему, коли я скопіював файл local.properties, який знаходився в моєму головному модулі проекту, до кореня всього проекту (тобто батьківського каталогу у ваш основний модуль)

Спробуйте скопіювати файл local.properties всередині модулів та кореневого каталогу. Треба працювати.


1
Я подумав, що файл local.properties автоматично генерується IDE. Чому потрібно копіювати або переміщувати цей файл в інші каталоги вручну?
ІгорГанапольський

13

Я зіткнувся з тією ж проблемою під час відкриття клонованого сховища git. Файл local.properties автоматично додається у файл .gitignore, оскільки він специфічний для середовища збирання кожної машини і тому не є частиною репо.

Рішення полягає в тому, щоб імпортувати проект, а не просто відкривати його після того, як ви його клонували з git, це змушує андроїд-студію створити файл local.properties, характерний для вашої машини:

Файл >> Імпорт проекту >>


12

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. Виконати:

    source ~/.bash_profile

  2. Перезапустіть термінал та Android Studio


8

Як це зробити на 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!

І переконайтеся, що у вас є Java :)

java -version

І градле :)

gradle --version


по-моєму, вам не вистачає:export ANDROID_HOME
До

1
Я встановлюю, ANDROID_HOMEа потім виконую source ~/.bash_profile, це проникне (виконувати sourceдобре, якщо ви не хочете виходити з системи, а також перезавантажуватися). У вашому випадку, export ANDROID_HOMEпісля, після перезавантаження або входу, змінна середовища ANDROID_HOMEв mac вже не буде.
Німітак


4

Це працювало для мене (Ubuntu):

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

Перезавантажте.


Мене цією справою цілили цілими днями і працювала лише ця річ. Дякую вам сер.
Zygro

3

у Windows я встановлюю ANDROID_HOME = E: \ android \ adt-bundle-windows-x86_64-20131030 \ sdk Потім він працює як очікується.

Якщо ви працюєте в Linux, вам потрібно встановити sdk.dir.

Сценарій використовує дві різні змінні.


1
Я додав його, додав у файл location.properties, але все ще стикається з тією ж проблемою
Suneel Prakash

1
У Windows переконайтесь, що ви уникаєте зворотних косих на шляху. Мені довелося увійти на шлях на кшталтsdk.dir=C:\\Users\\username\\AppData\\Local\\Android\\Sdk
Xsasan

2

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

після цього просто імпортуйте проект у затемнення, і це все :)


2

В Linux спробуйте запустити studio.sh з терміналу і встановіть ANDROID_HOME в цьому терміналі. Це працювало для мене.


2

Якщо ви використовуєте Windows Plantform, спробуйте запустити Android Studio як адміністратор


1

Просто видаліть sdk.dir у файлі local.preoperties та встановіть змінну середовища ANDROID_HOME . Це працювало для мене.


Файл local.properties автоматично генерується IDE. Це слід підробляти?
ІгорГанапольський

1

експортувати ANDROID_HOME = / xxx / xxx / у оболонку, а потім використовувати її System.env.ANDROID_HOME у файлі gradle.

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


У exportцій відповіді важливо відзначити. Я ANDROID_HOMEвизначив і навіть додав це до PATH, але якщо цього не зробити export ANDROID_HOME, gradle не зможе його знайти.
лазе

1

Ваш файл local.properties може бути відсутнім. Якщо так, додайте файл з назвою "local.properties" всередині /local.properties та надайте розташування sdk таким чином.

sdk.dir = C: \ Користувачі \\ AppData \ Місцеві \ Android \ Sdk


1

Я встановив ANDROID_HOME = [PATH_OF_MY_ANDROID_SDK] в мою змінну середовища. Це рішення працює для мене.


0

Я щойно вирішив ту саму проблему, додавши ANDROID_HOME як загальносистемну змінну. У Ubuntu він повинен бути в / etc / profile або у файлі сценарію оболонки в /etc/profile.d/

Потім вийдіть із системи та увійдіть знову, тепер Gradle повинен розпізнати змінну ANDROID_HOME.


0

Я зіткнувся з подібною проблемою. Якось у моєму проекті не було папки збірки. Скопіювавши цю папку з іншого проекту в мій проект, у мене виникли проблеми, це вирішило цю проблему.


0

Встановлення Build-Tools 23.0.1 замість 23.0.2 вирішило цю проблему для мене.


0

рішення:

1 додайте "sdk.dir = path_of_sdk"

2 виконати gradlew зі змінною evn, як:

$ ANDROID_HOME = path_of_sdk ./gradlw


0

Ви сказали, що версія версії local.properties створює проблеми для вас. Я зламав разом сценарій, який використовує інструмент командного рядка Android для оновлення файлу local.properties на всіх машинах, які беруть участь у виробництві. Команда проекту для оновлення Android , окрім 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"

Цей сценарій - це перше, що ми працюємо на будь-якій новій машині, де ми кодуємо. Його потрібно запустити в кореневому каталозі проектів. Звичайно, в андроїд-студії може бути графічний спосіб вирішення цього питання, але я не знаю, як використовую інший редактор. Я також не можу стверджувати, що рішення є загальним, але воно "працює для мене" (tm).


0

Я стикався з тією ж проблемою на 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

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


0

Для Windows:

  1. Додайте ANDROID_HOME до змінних середовища: ANDROID_HOME = C: / Користувачі / YOUR_USERNAME / AppData / Local / Android / sdk
  2. Додайте% ANDROID_HOME% \ platform-інструменти до PATH.

0

У моїй системі (Ubuntu 20.04 після двох оновлень версій з 19.04) симптоми були так, ніби gradle(4.4.1 встановлено з APT repos) ігнорувала ANDROID_HOMEзмінну середовища, в той час як набирав sdk.dirзначення, local.propertiesякщо я створив його.

Причиною було те, що ця javaкоманда посилалася openjdk version "11.0.7". Після того, як я встановив openjdk-8-jdkпакет і зробив update-alternatives --config javaза замовчуванням javaверсію 8 ( "1.8.0_252"), gradleпочав працювати, як очікувалося.


-3

Це питання з листопада 2013 року (поки Android Studio ще перебуває в режимі попереднього перегляду розробника),

Наразі (AS v2.2, серпня 2016) під час інсталяції AS просить вибрати папку SDK (або встановити за замовчуванням), і вона автоматично застосовується до будь-якого проекту, який ви відкриваєте.

Це означає, що будь-яке можливе вирішення чи виправлення не має значення, оскільки питання вже не відтворюється.


Це неправильно. Наразі я намагаюся вирішити те саме питання, все ще не пощастило, спробував багато можливих рішень, розміщених тут.
AndroidDev
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.