code

Android MultiDex 란 무엇입니까?

codestyles 2020. 8. 30. 08:40
반응형

Android MultiDex 란 무엇입니까?


MultiDex에 대한 많은 게시물이 있습니다. 가끔 오류가 포함 해결, 경험 multiDexEnabled truedefaultConfig내 build.gradle의 섹션을 참조하십시오.

그러나이 기능은 정확히 무엇입니까? 그것을 사용하는 시나리오는 무엇입니까?


문서 인용 :

Android 애플리케이션 (APK) 파일에는 앱 실행에 사용되는 컴파일 된 코드가 포함 된 DEX (Dalvik Executable) 파일 형식의 실행 가능한 바이트 코드 파일이 포함되어 있습니다. Dalvik Executable 사양은 Android 프레임 워크 메서드, 라이브러리 메서드 및 자체 코드의 메서드를 포함하여 단일 DEX 파일 내에서 참조 할 수있는 총 메서드 수를 65,536 개로 제한합니다. 이 제한을 초과하려면 multidex 구성이라고하는 둘 이상의 DEX 파일을 생성하도록 앱 빌드 프로세스를 구성해야합니다.

따라서 기능은 복잡한 앱을 컴파일 할 수 있다는 것입니다. 이를 사용하는 시나리오는 64K DEX 메서드 참조 제한에 도달하여 앱이 컴파일에 실패하는 경우입니다. 다음과 같은 빌드 오류로 나타납니다.

Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

이렇게 간단합니다

하나의 .dex 파일은 65,536 개의 메서드 (참조)를 가질 수 있으므로 참조 수가 65,536 개를 초과하면 multidex를 사용합니다.

더 많은 설명!

안드로이드 응용 프로그램은 .dex 파일로 컴파일되며, 차례로 단일 .apk 파일로 압축됩니다.
DVM (Dalvik Virtual Machine)은 .dex 파일 / 파일을 사용하여 바이트 코드를 실행합니다.

참조 수가 65,536 개를 초과하는 원인은 무엇입니까?
귀하가 작성한 메소드 + Android 프레임 워크 메소드 + 타사 라이브러리 (예 : Volley, Retrofit, Facebook SDK 등) 메소드.
"어딘가에"
App Compat 24.2.1에 16.5k 메소드가 포함되어 있음
Google Play 서비스 GCM 9.6.1에 16.7k 메소드가 포함되어 있으므로 App Compat 24.2.1이 포함
된 간단한 Hello world 애플리케이션을 만들었다면 이미 1/4입니다. 방법은 단 하나 덱스 방법의 한계를 건너


Android에서 MultiDex 란 무엇입니까?

Dex 는 Dalvik Executable의 약자로, Google의 가상 머신 프로세서 (Dalvik)가 Android 애플리케이션을 처리하는 데 사용하는 것입니다. Android는 작고 단순한 앱을 염두에두고 빌드되었으며 하나의 Dalvik Executable에 대한 제약으로 인해 65,536 개의 메서드에서 코드 참조 지붕이 고정되었습니다. 이 문제와 Dalvik 머신이 코드 실행을 처리하는 방식으로 인해 Monkey Patch 또는 MultiDex 통합 까지 컴파일 및 호출 문제가있었습니다 . Android Studio의 MultiDex 통합을 통해 Android 개발자는 65,536 개 이상의 메서드로 코드 기반을 컴파일하고 실행할 수 있습니다!

참고 URL : https://stackoverflow.com/questions/33588459/what-is-android-multidex

반응형