Что такое Android MultiDex?


есть много сообщений о MultiDex. Я испытал, иногда, ошибки решаются в том числе multiDexEnabled true на defaultConfig раздел моей сборки.градля.

но, что именно это за функция? Каковы сценарии его использования?

3 67

3 ответа:

цитирую документация:

файлы приложений Android (APK) содержат исполняемые файлы байт-кода в виде исполняемых файлов Dalvik (DEX), которые содержат скомпилированный код, используемый для запуска вашего приложения. Исполняемая спецификация Dalvik ограничивает общее число методов, на которые можно ссылаться в одном файле DEX, до 65 536, включая методы платформы Android, методы библиотеки и методы в вашем собственном коде. Преодоление этого предела требует, чтобы вы настраиваете процесс сборки приложения для создания более одного файла 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.

Более Подробное Объяснение!

приложение для android компилируется в a .файл dex, который, в свою очередь, заархивирован в один.apk файл.
DVM (виртуальная машина Dalvik) использует .dex файл / файлы для выполнения байт-кодов.

что приводит к тому, что число ссылок превышает 65 536 ограничения?
Методы, написанные вами + методы Android Framework + сторонняя библиотека (например,Volley, Retrofit, Facebook SDK и т. д.) методы.
Я читал "где-то"
Совместимость приложений 24.2.1 содержится 16.5 к методам
Google Play Services GCM 9.6.1 содержит 16.7 K методов
Поэтому, если вы создали простое приложение Hello world, которое имеет приложение Compat 24.2.1, вы уже 1/4 пути для пересечения одного предела методов dex

что такое MultiDex в Android?

Декс означает Dalvik исполняемый файл, который является то, что процессор виртуальной машины Google (Dalvik) использует для обработки приложений Android. Android был построен с небольшими и простыми приложениями в виду и ограничения на одном исполняемом Dalvik закрепил крышу ссылок кода на 65 536 методов. Из-за этой проблемы и того, как машина Dalvik обрабатывает выполнение кода, были некоторые компиляции и вызовы вопросы, пока обезьяна патч или MultiDex интеграция. Многодексная интеграция в Android Studio позволяет разработчикам Android возможность компиляции и выполнения кода базы с более чем 65 536 методов!