규모가 큰(본 프로젝트 + 참조 라이브러리) 프로젝트에서는 빌드가 안되는 문제
관련 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의 허용치를 늘리는 구문 적용
- ☞ 관련 글
'프로그래밍 > Android Studio 설정' 카테고리의 다른 글
[NDK] External tool javah 스크립트 만들기 (1) | 2016.04.18 |
---|---|
[NDK] javah class not found (0) | 2016.04.18 |
[gradle] google play service 등 메소드 수가 많은 라이브러리 참조시 오류 (6) | 2015.02.13 |