MultiDex는 Android Version 21 이후에도 과연 유효할까?

·

· 최종 수정


터질 듯한 바인더 한 권이 얇은 책 여러 권으로 나뉘어 책장에 꽂히는 장면에 'MultiDex minSdk 21+ 아직 필요할까' 표제를 얹은 도면풍 그림

한눈에 보기

  • 답: MultiDex라는 개념은 지금도 유효합니다. 다만 minSdk가 21(Android 5.0) 이상이면 멀티덱스가 기본으로 켜져서, multiDexEnabled true도 MultiDex 라이브러리도 따로 넣지 않아도 됩니다.
  • 이유: DEX 파일 하나에는 메서드 참조를 65,536개(64K)까지만 담을 수 있습니다. Android 5.0부터 쓰는 ART는 설치할 때 나뉜 DEX 파일을 모두 읽지만, 그 전의 Dalvik은 classes.dex 하나만 읽습니다.
  • 직접 설정할 때: minSdk 20 이하를 지원하면서 메서드 수가 64K를 넘을 때만 multiDexEnabled true, androidx.multidex:multidex:2.0.1, MultiDexApplication을 넣습니다. Unity 2022.3 이후 버전은 최소 API가 22 이상이라 여기에 해당하지 않습니다.

확인한 기준: Android Developers 멀티덱스 문서, Unity 2022.3·6.0 Android 요구 사항 문서 · 처음 쓴 날 2025-07-10 · 마지막 확인 2026-10-28

최근 안드로이드 버전에서도 MultiDex를 일일이 설정해 줘야 하는지 고민이 돼서 찾아봤습니다.

결론: minSdk 21 이상이면 알아서 해 줍니다. multiDexEnabled 설정도, MultiDex 라이브러리도 따로 넣지 않아도 됩니다.

MultiDex라는 개념은 지금 안드로이드 버전에서도 여전히 유효합니다. 다만 개발자가 직접 설정해야 하는지는 앱이 지원하는 최소 API 레벨(minSdkVersion)에 따라 달라집니다.

64K 제한과 Dalvik·ART의 차이

DEX 파일 하나가 참조할 수 있는 메소드는 65,536개까지입니다(64K 제한). 이 수를 넘으면 빌드 도구가 코드를 classes.dex, classes2.dex, classes3.dex처럼 여러 파일로 나눕니다. Android 5.0 이상의 ART는 앱을 설치할 때 이 파일들을 모두 찾아 읽지만, 그 전의 Dalvik은 classes.dex 하나만 읽기 때문에 MultiDex 라이브러리가 나머지 파일을 찾아 줘야 합니다.

classes.dex, classes2.dex, classes3.dex로 나뉜 APK를 Android 4.4 이하의 Dalvik은 classes.dex만 직접 읽고 나머지는 MultiDex 라이브러리가 읽어야 하지만, Android 5.0 이상의 ART는 설치할 때 모두 읽어서 멀티덱스가 기본으로 켜진다는 비교 도식
minSdk가 21 이상이면 ART가 나뉜 DEX를 모두 읽어서, MultiDex 지원 라이브러리를 따로 넣지 않아도 됩니다.

minSdk 21(Android 5.0 Lollipop) 이상이면 멀티덱스가 기본으로 켜집니다

  • 이 버전부터는 안드로이드 런타임(ART)이 여러 개의 DEX 파일을 읽는 것을 기본으로 지원합니다.
  • 그래서 minSdkVersion이 21 이상이면 멀티덱스가 기본으로 켜지고, 별도의 MultiDex 지원 라이브러리를 추가할 필요가 없습니다. 빌드 도구가 알아서 처리해 줍니다.
  • build.gradle에 multiDexEnabled true를 따로 적을 필요도 없습니다. Android Developers 멀티덱스 문서가 이 설정을 넣으라고 안내하는 경우는 minSdk가 20 이하일 때뿐입니다. 처음 글에는 “릴리스 빌드에서는 여전히 필요할 수 있다”고 썼는데, 공식 문서와 맞지 않아 바로잡았습니다.

minSdk 20(Android 4.4W KitKat) 이하면 직접 설정합니다

  • 이 버전들은 Dalvik 런타임을 쓰고, Dalvik은 DEX 파일 하나만 처리할 수 있습니다.
  • 앱과 라이브러리의 메소드 수를 모두 합쳐 65,536개를 넘으면, MultiDex를 직접 설정해야 빌드 오류를 피할 수 있습니다.
  • 설정 방법:
    • build.gradle 파일에 multiDexEnabled true를 추가합니다.
    • MultiDex 지원 라이브러리 의존성을 추가합니다(androidx.multidex:multidex:2.0.1 등). 2026년 10월 기준으로도 2.0.1(2018년 12월 출시)이 마지막 안정 버전입니다(AndroidX multidex 릴리스 노트).
    • Application 클래스가 MultiDexApplication을 상속하게 하거나, attachBaseContext()에서 MultiDex.install(this)를 호출합니다.
  • Android Studio에서 기기에 바로 실행하면 연결한 기기에 맞춰 빌드를 최적화해서, Android 5.0 이상 기기에서는 멀티덱스를 켜 줍니다. 이 최적화는 Android Studio로 실행할 때만 적용되니, minSdk 20 이하 앱이라면 릴리스 빌드에도 위 설정을 해 둬야 합니다.
  • 메소드 수 자체를 줄이는 방법도 있습니다. 릴리스 빌드에서 R8 코드 축소(minifyEnabled true)를 켜면 쓰지 않는 코드가 빠져서, 공식 문서 설명대로 멀티덱스가 아예 필요 없어질 수도 있습니다.

Unity로 Android 빌드할 때

2026년 10월 기준으로 Unity가 지원하는 Android 최소 버전은 Unity 2022.3이 Android 5.1(API 22), Unity 6.0이 Android 6.0(API 23), Unity 6.6이 Android 8.0(API 26)입니다. 모두 API 21보다 높아서, 이 버전들로 만드는 프로젝트는 멀티덱스가 기본으로 켜집니다. 그래서 Gradle 템플릿이나 Application 클래스에 MultiDex 설정을 따로 넣지 않아도 됩니다.

정리

정리하면, MultiDex는 오래된 안드로이드 버전(API 21 미만)을 지원해야 하고 앱이 커서 64K 메소드 제한을 넘을 때 여전히 꼭 필요합니다. 최신 안드로이드 버전만 대상으로 하는 앱은 시스템이 알아서 처리해 주니, 개발자가 따로 설정할 것이 없습니다.

자주 묻는 질문

minSdk 21 이상인데 multiDexEnabled true를 넣어야 하나요?

넣지 않아도 됩니다. 공식 문서는 minSdk가 21 이상이면 멀티덱스가 기본으로 켜지고 MultiDex 라이브러리도 필요 없다고 합니다. multiDexEnabled true와 라이브러리 추가는 minSdk 20 이하일 때 하는 설정입니다.

안드로이드 64K 메소드 제한이 뭔가요?

DEX 파일 하나가 참조할 수 있는 메소드 수가 65,536개(64×1024)로 정해져 있는 제한입니다. 안드로이드 프레임워크, 라이브러리, 직접 짠 코드의 메소드를 모두 합쳐서 셉니다. 이 수를 넘으면 코드를 classes2.dex처럼 여러 DEX 파일로 나눠야 합니다.

Unity로 만든 Android 게임도 MultiDex를 설정해야 하나요?

설정하지 않아도 됩니다. Unity 2022.3은 API 22, Unity 6.0은 API 23 이상만 지원해서 최소 API 레벨이 항상 21보다 높습니다. 그래서 멀티덱스가 기본으로 켜집니다.

minSdk 20 이하에서 64K를 넘으면 어떤 오류가 나나요?

빌드할 때 Too many field references: 131000; max is 65536.처럼 최대치가 65536이라는 오류가 납니다. 예전 빌드 도구에서는 method ID not in [0, 0xffff]: 65536으로 나오기도 합니다. 이때는 위의 MultiDex 설정을 넣거나, R8 코드 축소로 메소드 수를 줄입니다.

함께 보면 좋은 글

UNIT5 Dev Blog

Unity·모바일 게임 개발팀 UNIT5가 실제 개발 중 겪은 문제와 해결 과정을 기록합니다. 틀린 내용이나 더 좋은 방법이 있다면 댓글로 알려주세요. 블로그 소개 →

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최근 글