본문 바로가기

기술/프로그래밍 언어

IntelliJ 13.0.2 에서 Gradle 파일과 Sync하기


소개 


Android Studio는 최근에 추가된 공식 개발툴로써 아직 베타 버전이며, 현재 버전이 0.4로써 아직 가야할 길이 멀다. 실제로 사용하다보면 자잘한 버그를 많이 만날 수 있고, 좀 불안정한 모습이 있어서 본격적으로 사용하기는 좀 이르다. 그러나 Eclipse에 비해 매우 가볍고 확장성이나 사용성이 좋다는 이유로 지금 까지 사용해 오다가 Android Studio가 JetBrains의 IntelliJ Community 버전에 기반하고 있다는 소식을 듣고, 곧장 Android 개발 툴을 IntelliJ 13 Ultimate 버전으로 교체하였다. JetBrains 사에서는 Android 개발 지원 Plugin이 다른 소스 코드 Repository가 아니라고 공식적으로 이야기 하고 있으므로, Android Studio, IntelliJ Ultimate, IntelliJ Community 버전의 Android 개발 지원 수준은 모두 동일하다고 볼 수 있다. 이에 대한 자세한 내용은 이곳을 확인해보자: http://blog.jetbrains.com/idea/2013/05/intellij-idea-and-android-studio-faq/.



문제


Android Studio가 공식 개발툴이 되면서 Build 툴로써 Gradle이 도입되었다. Gradle이 좀 생소하기는 하지만 Dependency 관리를 편리하게 자동으로 해준다는 점에서 매우 유용하다. 다음 처럼 Dependency를 기술해주면 자동으로 Maven Repository로 부터 라이브러리들을 다운로드 받아 프로젝트에 추가해 준다.





그러나 Gradle 파일의 Dependency에 무언가를 추가하는 경우 자동으로 프로젝트의 Dependency가 업데이트가 되지 않는 경우가 있다. 이럴 때 Gradle 파일과 프로젝트의 Dependency 를 동기화 시켜주면 되는데,  이러한 기능이 Android Studio 에 있지만 IntelliJ 에는 없다. 



따라서 IDE 상에서는 코드를 보면 ‘Cannot resolve symbol’ 이라는 오류가 발생한다. 그러나 빌드를 하게 되면 Gradle 파일로부터 Dependency를 가져와 컴파일을 수행하므로 오류가 발생하지는다. 그림에서 볼 수 있듯이 com.android.support:appcompat-v7, com.android.support:support-v4가 Gradle 파일에는 기술되어 있지만 실제 프로젝트 Dependency에는 자동으로 추가되어 있지 않아 발생하는 오류이다.





위 그림에서 볼 수 있듯이 두 개의 파일이 프로젝트에 등록되어 있지 않으며, 이 때문에 IDE 에서 보면 다음과 같은 에러들이 발생한다. 이러한 에러를 유발하는 모든 클래스들은 저 두 라이브러리에 포함된 클래스들이다.





하지만 컴파일은 부드럽게 성공한다.




해결 방법


이를 해결하기 위해서는 Gradle 파일과 프로젝트 파일을 Sync 시켜주어야 한다. 이러한 기능이 Android Studio 에는 ‘Tools -> Android -> Sync Project File With Gradle’ 이라는 메뉴에 있지만, IntelliJ 에는 없다. 그러나 이와 동등한 기능을 가지고 있는 메뉴가 있다. 메뉴 에서 ‘View -> Tool Windows -> Gradle’ 





위의 버튼을 누르고 나면 Sync 작업을 진행하게 되고, 작업이 완료되면 프로젝트 Dependency에 누락된 파일들이 모두 추가되며, IDE 상에서의 오류도 사라진다. 물론 컴파일도 잘 된다.