Подтвердить что ты не робот

Что такое андроид multidex?

Есть много сообщений о multidex. Иногда я исправлял ошибки, включая multiDexEnabled true в разделе defaultConfig моего файла build.gradle.

Но какова именно эта особенность? Каковы сценарии его использования?

4b9b3361

Ответ 1

Цитирование документации:

Файлы приложения Android (APK) содержат исполняемые файлы байт-кода в виде файлов Dalvik Executable (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

Ответ 2

Это так просто, как это

Один файл .dex может иметь 65 536 методов (ссылок), поэтому, если количество ссылок превышает 65 536, вы переходите к multidex.

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

Андроидная прикладная программа скомпилирована в файл .dex, который, в свою очередь, зацикливается на одном файле .apk.
DVM (Dalvik Virtual Machine) использует .dex файл/файлы для выполнения байт-кодов.

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