자바에서 Hello.java라는 소스코드를 컴파일 하면 Hello.class라는 파일이 생성되는데요. 안드로이드는 Hello.class 파일을 dx라는 툴을 이용해서 여러개의 .class 파일을 하나의 classes.dex 파일로 생성합니다. dex(Dalvik Executable) 파일은 안드로이드의 달빅 가상 머신(DVM)에서 실행되는 파일 포맷이에요. (https://source.android.com/devices/tech/dalvik/dex-format.html)
이 dex 파일의 제약으로 인해 함수 개수는 65K(65,536)개를 초과할 수 없습니다. 이를 해결하기 위해서 Multidex라는 개념이 나온 것이고요. Multidex를 적용하면 APK 하나당 하나의 classes.dex 파일을 생성하는 것이 아니라 classes1.dex, classes2.dex와 같은 여러개의 dex 파일을 생성해서 65K 문제를 해결하는 것입니다.
간단한 앱을 만드는 경우 65K 문제를 고려해서 Multidex를 적용할 필요는 없고요. 사용하는 라이브러리가 많고, 앱의 기능이 추가되면서 함수 개수가 많아질 때 Multidex를 적용하면 됩니다.
적용 방법은 초보초보초밥님이 올려주신 링크를 참고하시면 돼요 :D
- 라이브러리 등을 포함해서 함수를 많이 포함하는 앱을 만들때