Есть много сообщений о multidex. Иногда я исправлял ошибки, включая multiDexEnabled true
в разделе defaultConfig
моего файла build.gradle.
Но какова именно эта особенность? Каковы сценарии его использования?
Есть много сообщений о multidex. Иногда я исправлял ошибки, включая multiDexEnabled true
в разделе defaultConfig
моего файла build.gradle.
Но какова именно эта особенность? Каковы сценарии его использования?
Цитирование документации:
Файлы приложения 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
Один файл .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