본문 바로가기

기술/프로그래밍 언어

Mac OS X 10.9.1, IntelliJ 13.0.3 에서 Android 프로젝트 생성 시 ANDROID_HOME 환경 변수를 찾지 못해 발생하는 오류의 해결 방법

IntelliJ 13 Ultimate 이란?





JetBrains 사에서 개발한 통합 IDE로써, Eclipse 에 비해 가벼우며, 다양한 기능과 다양한 언어를 사용할 수 있도록 확장할 수 있어서 1년 정도 전쯤에 Eclipse를 대신해 사용하고 있다. 특히 Refactoring, Code Style Formatter, Code Completion 기능 등이 매우 유용하며, Version Control System 들과도 연동이 잘 되어 있다.


나는 Java, Ruby on Rails, Node.Js, Android 개발 환경을 모두 IntelliJ 13으로 통합하여 사용하고 있고, C/C++ 플러그인이 업데이트 되길 기다리고 있다.




문제가 발생한 환경


Mac OS X 10.9.1

IntelliJ 13.0.2 Ultimate with Android 



문제 상황


IntelliJ 13.0.1 에서 13.0.2로 업그레이드를 한 후 Android 프로젝트 생성 및 빌드에 문제가 발생하였다.

오류 화면과 메시지는 다음과 같았다.





3:23:28 PM Gradle 'untitled11' project refresh failed: 

Could not execute build using Gradle distribution 'http://services.gradle.org/distributions/gradle-1.9-bin.zip';. 

Build file '/Volumes/Project/development/Example/untitled11/untitled11/build.gradle' line: 9 

A problem occurred evaluating project ':untitled11'. 

A problem occurred evaluating project ':untitled11'. 

SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable. 




위 오류는 ANDROID_HOME를 설정하지 않아 발생한 것이었다. ANDROID_HOME은 Android SDK 의 폴더 위치를 저장하고 있는 환경 변수로써, IntelliJ가 이 환경 변수를 참고하여 Android 프로젝트를 생성한다. 그런데 이 과정에서 이 변수가 존재하지 않자, 몇 가지 필요한 과정을 거치지 못했기 때문에 오류가 발생한 것이다.


원래 정상적으로 프로젝트가 생성되었다면 다음과 같은 프로젝트 폴더 구조가 만들어져야 하고, Gradle Task 들도 정상적으로 목록에 나타나야 한다.





위의 두 스크린샷을 보면 알겠지만 루트 폴더 바로 아래의 생성되어야 할 폴더가 하나와 두 개의 Gradle 관련 파일이 누락되었다. 아래 그림을 보면 확실히 알 수 있다. 왼쪽이 오류로 생성된 프로젝트, 오른쪽이 정상적으로 생성된 프로젝트 구성이다.





위의 오류를 정확히 이야기 하면 Gradle을 이용해 프로젝트를 생성하는 도중 ANDROID_HOME 환경변수를 찾을 수 없어서, 오류가 발생했고, 이 과정에서 프로젝트 생성이 중단되면서 빌드에 필요한 몇몇 파일이 생성되지 않은 것이다.




문제 해결 방법



이를 해결하는 방법은 ANDROID_HOME 환경 변수를 만들어주고, PATH 환경 변수에 Android 관련 폴더 두 개를 설정해주는 것이다. 이를 위해 2개의 과정이 필요하다. 모든 과정이 끝나면 반드시 재부팅 한다.


1) 환경변수 PATH에 platform-tools, tools 폴더 설정해주기


먼저 bash 스크립트의 PATH에 Android SDK에 포함된 platform-tools, tools 폴더를 등록해주는 것이다. 이를 위해 터미널에서 다음과 같이 입력하면 된다.


vi ~/.bash_profile



그 다음 다음의 스크립트를 추가해준다.


export PATH=/[My Android SDK Path]/platform-tools:/[My Android SDK Path]/tools:$PATH 


물론 [My Android SDK Path] 는 자신의 컴퓨터의 Android SDK의 실제 경로로 바꿔주어야 한다.


참고 사이트: http://cduu.wordpress.com/2011/12/21/setting-android-and-path-environment-variables-on-mac-os-x/




2) /etc/launchd.conf 파일에 ANDROID_HOME 환경 변수 등록하기


여러 가지 profile 파일에 시도해 보았으나, 제대로 동작하지 않았다.

실제로 문제를 해결할 수 있었던 것은 launched.conf에 환경 변수를 등록해 주는 방법이었다.

이를 위해 터미널에서 다음과 같이 입력한다. 주의할 점은 launched.conf가 없을수도 있는데, 이 경우 그냥 새로 만들어 주면 된다는 것이다.


vi ~/etc/launchd.conf 



그 다음 다음과 같은 명령어를 추가해주고 저장한 다음 재부팅하였다.


setenv ANDROID_HOME /[My Android SDK Path]


그 다음 터미널에서 export를 실행해보자. 이 때 ANDROID_HOME이라는 환경 변수가 목록에 나타난다면 성공한 것이다.




결론


위의 오류 상황은 Android SDK 의 위치를 지정하는 ANDROID_HOME 환경 변수가 설정되지 않아, Gradle이 프로젝트를 생성하는 과정에서 발생한 것이다.  IntelliJ 13.0.2 에서는 프로젝트 내의 local.properties 파일에서 Android SDK의 경로를 읽어왔으나, 13.0.3 에서는 local.properties 파일이 아니라  운영체제의 환경 변수에서 이를 읽어오도록 수정되었다. 이렇게 변경됨으로써 다른 개발환경에서 개발한 Android 프로젝트를 다른 개발환경으로 옮겼을 때 일일히 local.properties 내의 SDK 경로를 수정해줘야만 하는 버거로움이 해소되었다. 


따라서 13.0.3 에서 기존 프로젝트를 정상적으로 이용하기 위해서는 /etc/launchd.conf 에 ANDROID_HOME 이라는 환경 변수를 설정해주어야 한다. 이렇게 설정해주고 재부팅하면 문제가 해결된다.


'기술 > 프로그래밍 언어' 카테고리의 다른 글

IntelliJ 13.0.2 에서 Gradle 파일과 Sync하기  (0) 2014.02.01