Gradle, Android 및 ANDROID_HOME SDK 위치


152

편집 : (2016 년 8 월)

이 질문은 2013 년 11 월부터 (Android Studio는 여전히 개발자 미리보기 모드에 있음),

설치 중 현재 (AS v2.2, 2016 년 8 월) AS는 SDK 폴더를 선택하라는 메시지를 표시하거나 (또는 ​​기본 설치) 설치중인 프로젝트에 자동으로 적용됩니다.

즉, 문제를 더 이상 재현 할 수 없으므로 가능한 해결 방법이나 수정은 관련이 없습니다.

원래 질문 :

우리는 래퍼를 사용하여 다른 개발자 PC에서 이미 구성되고 올바르게 실행되는 여러 모듈을 가진이 프로젝트를 가지고 있습니다. 완전한 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이 있습니다. 그들은 무엇을 원합니까? 여기서 무엇이 잘못 되었습니까?

우분투 13.04에서 실행

편집하다:

이미 sdk.dir=<path>프로젝트 루트에 local.properties 파일을 작성 했으며 작동합니다. 그러나 이로 인해 시스템 빌드 서버에서 코드를 이식하기가 더 어려워 지므로 여전히 의문점이 남아 있습니다.

ANDROID_HOME이 작동하지 않는 이유와 작동하게하려면 어떻게해야하는지 아는 사람이 있습니까?


1
local.properties 파일에서 프로젝트의 루트 디렉토리 아래에 SDK 경로를 지정하십시오. 이 파일이 있어야한다 : = sdk.dir를 <sdk_install_dir>
가브리엘 MARIOTTI

1
안녕하세요 @GabrieleMariotti 제안 해 주셔서 감사합니다. 그러나 나는 이미 이것을했고 작동합니다. 그러나 이로 인해 코드가 여러 시스템에서 서버를 구축하기가 더 어려워집니다. ANDROID_HOME이 작동하지 않는 이유와 작동하도록하려면 어떻게해야하는지 알고 싶습니다. 이 정보를 질문에 추가했습니다.
Budius

이 G + 커뮤니티에 게시하는 것이 좋습니다. plus.google.com/communities/114791428968349268860 공식 Google 커뮤니티입니다. 일반적으로 Google 팀은 신속하게 답변합니다.
Gabriele Mariotti

응, 한번해볼 게 감사!
Budius

2
@ 부디 우스 오류 메시지와 비슷한 경우가있었습니다. 해결책은 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 파일이 빌드를 작성하기를 원하지만 SDK 경로가 같지 않기 때문에 빌드 시스템 에서이 파일을 원하지 않습니다!)
Tobliug

7
\\ 소프트 \\ ADT-번들 - 창 - x86_64-20140702 \\ SDK : 창에 적어도 그것은 문자열 sdk.dir = D 백 슬래시 후 일
Cheburek

@Tobulug : 버전 제어 하의 파일을 제어 할 수 있으며 로컬 파일을 추가 또는 선택 해제하지 마십시오
sivi

설정 대신 내보내기를 사용하여 수정하십시오.
AugustoL

1
설정 이 잘못되었습니다 . 내보내기를 사용 합니다. 그러나이 방법으로이 변수를 내 보내면 Projekt-Folder에 local.properties 파일이 필요하지 않습니다. 재부팅 할 때마다이 설정을 유지하려면 ~ / .bashrc에에 수출 commad를 추가
suther

52

OSX 에서 IntelliJ는 .bash_profile 또는 .bash_rc 등에서 설정 한 환경 변수를 선택하지 않습니다.

자신의 SDK 위치 값을 대체하여 이것을 시도하십시오.

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

그런 다음 IntelliJ를 다시 시작하면 Bob이 삼촌입니다.

더 일반적으로 언급 된 문제에 대한 참조는 다음과 같습니다. https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/


4
참고로이 솔루션은 osx를위한 것입니다.
Matthew Daumen

4
그래 엘피 티탄에서 일 했어 launchctl setenv ANDROID_HOME ~/Library/Android/sdk
agmcleod

2
또는 당신은 당신의 환경 변수는 단순히 프록시 좋아하는 수 launchctl setenv ANDROID_HOME $ANDROID_HOMElaunchctl setenv JAVA_HOME $JAVA_HOME
Vagif

참고로 OSX의 경우이 수정은 bash 이외의 셸 (예 : zsh) 이외의 쉘을 사용하는 동안 동일한 오류가 발생하면 gradle을 통한 명령 줄 빌드에도 도움이됩니다. 이 명령을 실행하고 터미널 창을 다시 시작하십시오.
인터럽트

30

제 경우 settings.gradle에는 실종되었습니다.

파일을 저장하고 프로젝트의 최상위 폴더에 저장하십시오. 다른 프로젝트에서도 복사 할 수 있습니다.

스크린 샷 참조 :

여기에 이미지 설명을 입력하십시오

이것이 당신의 시간을 절약 할 수 있기를 바랍니다.


또는 누군가 하위 설정을 settings.gradle 파일에 추가하지 않았습니다. 서브 모듈을 추가 한 후이 작업을 수행하지 않은 주니어 팀이 있습니다. 그들의 IntellIJ가 어떻게 구성되어 있는지 확실하지 않지만 이것은 내 시간을 사소한 낭비했습니다.
Stevers

25

이것은 나를 위해 작동합니다 :

$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew

1
또한 위의 "내보내기"행을 ~ / .bashrc 또는 ~ / .bash_profile에 추가하여 재부팅 후에도 영구적으로 만들 수 있습니다.
46 초

19

Android Gradle 플러그인은 아직 베타 버전이며 버그 일 수 있습니다. 나를 위해 ANDROID_HOME을 설정해도 작동하지만 다른 버전 일 수 있습니다 (가장 최신 버전으로 다시 시도하고 작동하는지 알려주세요).

ANDROID_HOME뿐만 아니라 환경 변수 ANDROID_SDK도 설정하는 것이 좋습니다.

일부 컴퓨터 에서이 문제를 보았 으므로이 경우 local.properties를 만듭니다. 최신 버전의 Android Studio 가이 파일을 생성하고 sdk.dir 속성을 채우는 것을 알았습니다.

local.properties를 버전 제어로 확인하지 말고 gitignore에 추가하여 잠재적 문제로 정당한 것으로 식별 된 시스템에서 코드를 이식하는 것을 방해하지 않도록하십시오.


2
ANDROID_SDK를 정의하면 나에게 아무것도하지 않았습니다.
히스 국경

어떤 버전의 Gradle 및 Android 플러그인을 사용하고 있으며 local.properties 파일이 있습니까?
ZoFreX

2
추가 sdk.dir=/path/to/android/sdk는 나를 위해 일했습니다. IntelliJ 13.0.2로 만든 프로젝트의 일부로 gradle을 실행 중입니다.
Heath Borders

이것이 IntelliJ 버그 인 것 같습니다. youtrack.jetbrains.com/issue/IDEA-119361
히스 테두리

IntelliJ 또는 Android Studio에 버그가있을 수도 있지만 원래 질문은 명령 줄에서 Gradle을 사용하는 것과 관련이 있으며 자체 버그가있는 것으로 보입니다 (보고있는 문제와 관련이 있거나 없을 수 있음) 편집 : 또한 내 시스템에서 IntelliJ는 명령 줄에서 환경 변수를 상속하지 않습니다. 문제가 될 수 있습니까?
ZoFreX

16

어떤 이유로 든 gradle 스크립트는 환경에서 ANDROID_HOME 값을 선택하지 않습니다. 명령 행에서 명시 적으로 지정하십시오

$ ANDROID_HOME=<sdk location> ./gradlew

1
이상한 것이 있습니다-이것은 ANDROID_HOME에서는 작동하지만 ANDROID_NDK_HOME에서는 작동하지 않습니다. 후자를 위해 local.properties를 사용해야했습니다.
Andrew Smart

이 해결 방법은 도커 컨테이너에서 나를 위해 아무것도하지 않습니다.
IgorGanapolsky

14

메인 모듈에 local.properties 파일이 있고 시스템 레벨에서 ANDROID_HOME 환경 변수가 설정되었지만 동일한 문제에 직면했습니다.

내 주요 프로젝트 모듈에있는 local.properties 파일을 전체 프로젝트의 루트 (예 : 기본 모듈의 상위 디렉토리)에 복사 할 때이 문제가 해결되었습니다.

모듈과 루트 디렉토리에 local.properties 파일을 복사하십시오. 작동해야합니다.


1
local.properties 파일이 IDE에 의해 자동 생성 된다고 생각했습니다 . 이 파일을 다른 디렉토리로 수동으로 복사하거나 이동해야하는 이유는 무엇입니까?
IgorGanapolsky

13

복제 된 자식 저장소를 열 때 동일한 문제가 발생했습니다. local.properties 파일은 각 머신의 빌드 환경에 따라 .gitignore 파일에 자동으로 추가되므로 리포지토리의 일부가 아닙니다.

해결책은 프로젝트를 git에서 복제 한 후 열지 않고 프로젝트를 가져 오는 것입니다. 이렇게하면 android studio가 컴퓨터에 맞는 local.properties 파일을 작성합니다.

파일 >> 프로젝트 가져 오기 >>


12

맥 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를 다시 시작하십시오.


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

그래서 당신은 좋습니다.

안드로이드 스튜디오를 다시 시작하십시오!

그리고, 당신이 자바를 가지고 있는지 확인하십시오 :)

java -version

그리고 gradle :)

gradle --version


당신이 export ANDROID_HOME
빠졌다고

1
나는 설정 ANDROID_HOME한 다음 실행한다 source ~/.bash_profile. 이것은 침투 적 source이다. 귀하의 경우, export ANDROID_HOME재시작 또는 로그인 후 ANDROID_HOMEmac 의 환경 변수 가 사라집니다.
Nimitack


4

이것은 나를 위해 일했습니다 (우분투) :

추가 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 프라 카쉬을

1
Windows에서는 경로에서 백 슬래시를 이스케이프해야합니다. 나는 같은 길을 입력했다sdk.dir=C:\\Users\\username\\AppData\\Local\\Android\\Sdk
Xsasan

2

동일한 문제가 있습니다. 샘플 코드가 안드로이드 환경을 찾을 수없는 것 같습니다. 대신 settings.gradle에서 샘플 코드를 제거하고 설치가 올바르게 진행되도록 수정하십시오.

그 후 이클립스에서 프로젝트를 가져 오면 그게 전부입니다 :)


2

Linux에서는 터미널에서 studio.sh를 실행하고이 터미널에서 ANDROID_HOME을 설정하십시오. 이것은 나를 위해 일했습니다.


2

Windows plantform을 사용하는 경우 관리자 권한으로 Android Studio를 실행하십시오.


1

local.preoperties 파일 에서 sdk.dir을 삭제하고 ANDROID_HOME 환경 변수를 설정하십시오 . 그것은 나를 위해 일했다.


local.properties 파일은 IDE에 의해 자동 생성됩니다. 훼손되어 있습니까?
IgorGanapolsky

1

쉘에서 ANDROID_HOME = / xxx / xxx /를 내 보낸 다음 gradle 파일의 System.env.ANDROID_HOME에서 사용하십시오.

추신 : ANDROID_HOME을 전역 화하려면 '내보내기'키워드를 잊지 마십시오.


export이 대답은 중요하다. 나는 그것을 ANDROID_HOME정의하고 심지어 그것을 추가하고 PATH있었지만, 그렇지 않으면 export ANDROID_HOMEgradle은 그것을 찾을 수 없습니다.
lase

1

local.properties 파일이 누락되었을 수 있습니다. 그렇다면 /local.properties 안에 'local.properties'라는 파일을 추가하고 다음과 같이 SDK 위치를 제공하십시오.

sdk.dir = C : \ 사용자 \\ AppData \ Local \ Android \ Sdk


1

내가 설정 한 ANDROID_HOME = [PATH_OF_MY_ANDROID_SDK를] 내 환경 변수. 그 해결책은 저에게 효과적입니다.


0

ANDROID_HOME을 시스템 전체 변수로 추가하여 정확히 동일한 문제를 해결했습니다. 우분투에서는 / etc / profile 또는 /etc/profile.d/ 의 쉘 스크립트 파일에 있어야합니다.

그런 다음 로그 아웃하고 다시 로그인하면 Gradle은 ANDROID_HOME 변수를 인식해야합니다.


0

비슷한 문제가 발생했습니다. 어떻게 든 내 프로젝트에 빌드 폴더가 없었습니다. 이 폴더를 다른 프로젝트에서 내 프로젝트로 복사하면 문제가 발생 하여이 문제가 해결되었습니다.


0

23.0.2 대신 Build-Tools 23.0.1을 설치하면이 문제가 해결되었습니다.


0

솔루션 :

1 "sdk.dir = path_of_sdk"추가

2 다음과 같이 evn 변수로 gradlew를 실행하십시오.

$ ANDROID_HOME = 경로 _of_sdk ./gradlw


0

local.properties 버전을 지정하면 문제가 발생한다고합니다. 안드로이드 커맨드 라인 도구를 사용하여 프로덕션과 관련된 시스템에서 local.properties 파일을 새로 고치는 스크립트를 해킹했습니다. 안드로이드 업데이트 프로젝트 명령은 이외의 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"

이 스크립트는 우리가 코딩하는 새로운 머신에서 가장 먼저 실행됩니다. 루트 프로젝트 디렉토리에서 실행해야합니다. 물론 안드로이드 스튜디오는 이것을 처리하는 GUI 방식을 가지고 있지만 다른 편집기를 사용하면서 알 수는 없습니다. 또한 솔루션이 일반적이라고 주장 할 수는 없지만 "Works For Me"(tm)입니다.


0

우분투에 같은 문제에 직면했다 (모두 local.propertiesANDROID_HOME추가 된)하지만, 빌드가 지속 실패. 따라서 해결 방법은 다음 줄을 추가하는 것입니다.

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

studio.sh스크립트에 직접 ( /usr/local/android-studio/bin)

아마 도움이 될 것입니다.


0

나는 같은 오류가 발생했지만 내 경우에는 프로젝트를 복제하고 있었고 복제 된 프로젝트는 안드로이드 API 22로 빌드되었지만 당시에는 설치하지 않았습니다 (API 24 및 25가 설치되어 있음) ........ API 22 용 SDK 도구를 다운로드해야했습니다.


0

Windows의 경우 :

  1. ANDROID_HOME을 환경 변수에 추가하십시오. ANDROID_HOME = C : / Users / YOUR_USERNAME / AppData / Local / Android / sdk
  2. PATH에 % ANDROID_HOME % \ platform-tools를 추가하십시오.

0

내 시스템 (19.04에서 두 가지 버전 업그레이드 후 우분투 20.04) gradle에서 (APT repos에서 설치 한 4.4.1) 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 년 11 월부터 (Android Studio는 여전히 개발자 미리보기 모드에 있음),

설치 중 현재 (AS v2.2, 2016 년 8 월) AS는 SDK 폴더를 선택하라는 메시지를 표시하거나 (또는 ​​기본 설치) 설치중인 프로젝트에 자동으로 적용됩니다.

즉, 문제를 더 이상 재현 할 수 없으므로 가능한 해결 방법이나 수정은 관련이 없습니다.


맞습니다. 나는 현재 같은 문제를 해결하려고 노력하고 있지만 여전히 운이 없다. 여기에 게시 된 많은 가능한 솔루션을 시도했다.
AndroidDev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.