Hyun Chul's Utopia

Android Studio 빌드시 UNEXPECTED TOP-LEVEL ERROR 에러 본문

프로그래밍/Android

Android Studio 빌드시 UNEXPECTED TOP-LEVEL ERROR 에러

디프시다루핀 2015. 1. 11. 23:54

최근 Android Studio를 통해 작업을 진행하고 있습니다. Gradle라는 녀석도 좀 생소하다가 이제야 적응이 되었네요..


현재 진행하고 있는 프로젝트에는 좀.. 많은 라이브러리를 포함하고 있습니다. 그러던 어느날.. 추가로 라이브러리 하나를 더 넣었는데.. 빌드 시간이 엄청 길어지더니..(무슨 빌드를 10분 넘게 하더랍니다..) 성공할때도 있고.. 실패할때도 있고.. 엄청 짜증나는 현상이 발생 하더군요... (무슨 시스템 빌드 시키는것도 아니고 이거 원...)


무튼.. 10~15분만에 빌드 Fail을 떨어뜨린 녀석의 Error로그를 살펴보니.. 다음과 같더군요..

[실제 빌드 과정에서 출력된 Error코드 캡쳐]


위의 이미지 처럼 중간에 "UNEXPECTED TOP-LEVEL ERROR" 라는 문구가 확실히 보입니다. 그 아래에는 "java.lang.OutOfMemoryError: Java heap space" 라는 문구가 보입니다.. 뭔가 메모리가 부족한가 봅니다.. 왜그런진 저도 잘 모릅니다.. 그래서 바로 구글형님께 물어 보았습니다.


일단 결론은.. Gracle이 Build하는 과정에서 메모리가 부족하여 발생하는 현상으로 보였습니다.

https://groups.google.com/forum/#!topic/adt-dev/P_TLBTyFWVY


그래서 build.gradle 파일에 다음과 같은 옵션을 넣어 줍니다.

android {

    dexOptions {

        javaMaxHeapSize "2g"

    }

}


저같은 경우는 2g 정도만 잡아줘도 정상적으로 빌드가 가능했었습니다.

기본적으로 build시에 어느정도 Heap영역을 할당하고 작업이 되는지는 모르겠으나.. 생각보다 많은 영역을 사용하고 있지는 않은가 봅니다. (혹시 이 부분에 대해서 알고 계신분은 알려주시면 감사하겠습니다..)


무튼 위의 링크에서 한번 더 타고 들어가보니.. DexOption에 지정할 수 있는 옵션이 더 있는것 같더군요.

https://android.googlesource.com/platform/tools/build/+/master/builder/src/main/java/com/android/builder/DexOptions.java



무튼 이번 경우에서 특이한 사항은 Build가 항상 실패하진 않는다는 사실입니다. 3번중 2번은 실패가 떨어지나.. 1번은 성공 할 때도 있더군요..

혹시 빌드가 매우 느려지거나 하신다면 해당 옵션을 추가 해보는것도 방법이 되지 않을까 싶습니다.





Comments