멀티덱스 /
multidex application
왜 필요한가?
Android 5.0 (API level 21) 이전 버전에서는 app code 를 실행할 때 Dalvik runtime 쓴다. 기본적으로 달빅은 apk 당 하나의 classes.dex bytecode 파일 만 쓰게 제한한다. 이 제한을 해결하기 위해서, 모듈단의 build.gradle
에 multidex library 를 추가해서 사용한다.
Android 5.0 (API level 21) 이상에서는 필요없다.
android 5.0 이상에서는 ART 라 부르는 runtime 을 사용한다. 이 녀석은 원래 apk 가 여러 DEX 파일을 사용하는 것을 지원한다.
app install 시점에 pre-compilation 을 하는데, 이 때 classesN.dex 를 scan 하고, compile 해서 하나의 .oat 로 만든다. 그래서 minSdkVersion 이 21 이상이면 자동으로 multidex 가 enable 됐다고 보면 된다. multidex library 도 필요없다.
multidex liibrary 의 한계
위에서 이야기 했지만, 이 multidex library 는 Android 5.0 (API level 21)미만에서 사용한다.
Limitations of the multidex library:
- 1번째외의 다른 DEX file 들이 크면, 앱이 시작시 기기기의 data partition 에 DEX 파일들의 설치 하는 것은 복잡하고, ANR 을 일으킬 수 있다.
- api level 21 이전의 버전들에서 실행하는 것은 linearalloc limit 을 완전히 해결하진 못한다.
댓글 없음:
댓글 쓰기