본문 바로가기

프로그래밍/Android Studio 설정

[gradle] dex size limit 문제


규모가 큰(본 프로젝트 + 참조 라이브러리) 프로젝트에서는 빌드가 안되는 문제


관련 android 글

https://developer.android.com/tools/building/multidex.html

dex의 정의에 관한 설명

http://stackoverflow.com/questions/24224186/what-is-dex-in-gradle


dex라는건 android를 빌드할 때, 이 정보를 class파일로 가지고 있는것이 아니라 .dex로  그 안에 바이트 정보로 보관하고 있다. 여기에는 클래스, 함수 등의 이름이 정의되어 있다. 


문제는 초기 안드로이드는 2^16 개의 dex index 맵을 생성해 놓았다. 그렇기 때문에 build 시 dex의 index가 2^16 개가 초과해 버리면 indexoutofboundsexception 이 발생해버리는 것이다. 


때문에 이를 해결하기 위해서는 index의 수를 조정 하거나 맵의 크기를 늘일 수 밖에 없다.

지금까지는 다음과 같은 해결 방법이 제시된다. 


특히 4번은 android studio에만 해당이 된다.


방법

1. 메소드 , 클래스 수 관리

2. 프로가드사용 

3. 필요한 라이브러리만 사용

 - android studio gradle에서는 특정 한 라이브러리에서 모듈만 사용하는게 가능하다.

4. dex의 허용치를 늘리는 구문 적용

 - ☞ 관련 글