Jest wiele postów na temat MultiDex. Czasami napotkałem błędy rozwiązane, w tym multiDexEnabled true
w defaultConfig
sekcji moja build.gradle.
Ale czym właściwie jest ta funkcja? Jakie są scenariusze korzystania z niej?
Jest wiele postów na temat MultiDex. Czasami napotkałem błędy rozwiązane, w tym multiDexEnabled true
w defaultConfig
sekcji moja build.gradle.
Ale czym właściwie jest ta funkcja? Jakie są scenariusze korzystania z niej?
Odpowiedzi:
Cytując dokumentację :
Pliki aplikacji na Androida (APK) zawierają wykonywalne pliki kodu bajtowego w postaci plików Dalvik Executable (DEX), które zawierają skompilowany kod używany do uruchamiania aplikacji. Specyfikacja Dalvik Executable ogranicza całkowitą liczbę metod, do których można odwoływać się w pojedynczym pliku DEX do 65 536, w tym metody platformy Android, metody biblioteczne i metody we własnym kodzie. Przekroczenie tego limitu wymaga skonfigurowania procesu kompilacji aplikacji w celu wygenerowania więcej niż jednego pliku DEX, znanego jako konfiguracja wieluidex.
A więc funkcja jest taka: umożliwia kompilację złożonej aplikacji. Scenariusze korzystania z niej dotyczą sytuacji, gdy kompilacja aplikacji nie powiedzie się z powodu osiągnięcia limitu odwołania do metody 64 KB DEX. To pojawia się jako błąd kompilacji, taki jak:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
Pojedynczy plik .dex może mieć 65 536 metod (odwołań), więc jeśli liczba odniesień przekracza 65 536, możesz skorzystać z multidex.
Aplikacja dla systemu Android jest kompilowana do pliku .dex, który z kolei jest spakowany do pojedynczego pliku .apk.
DVM (Dalvik Virtual Machine) używa plików / plików .dex do wykonywania kodów bajtowych.
Co powoduje, że liczba odwołań przekracza 65 536 limitów?
Metody napisane przez Ciebie + metody Android Framework + metody biblioteki zewnętrznej (np. Volley, Retrofit, Facebook SDK itp.).
Przeczytałem "gdzieś"
App Compat 24.2.1 zawiera 16,5 tys. Metod
Usługi Google Play GCM 9.6.1 zawiera 16,7 tys. Metod
Więc jeśli stworzyłeś prostą aplikację Hello world, która ma App Compat 24.2.1, jesteś już 1/4 sposób na przekroczenie limitu pojedynczych metod dex
Co to jest MultiDex w systemie Android?
Dex oznacza Dalvik Executable, czyli to, czego procesor maszyny wirtualnej Google (Dalvik) używa do obsługi aplikacji na Androida. Android został zbudowany z myślą o małych i prostych aplikacjach, a ograniczenia jednego pliku wykonywalnego Dalvik spowodowały, że wiele odwołań do kodu zostało przypisanych 65 536 metod. Z powodu tego problemu i sposobu, w jaki maszyna Dalvik radzi sobie z wykonywaniem kodu, wystąpiły problemy z kompilacją i wywoływaniem, aż do integracji Monkey Patch lub MultiDex . Integracja MultiDex z Android Studio umożliwia programistom Androida kompilację i wykonanie kodu z ponad 65 536 metodami!
Według oficjalnej strony programisty Androida.
If your minSdkVersion is set to 21 or higher, multidex is enabled by default and you do not need the multidex support library.