Что такое Android MultiDex?

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

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

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 + сторонняя библиотека (например, Volley, Retrofit, Facebook SDK и т. д.).
Я читал "где-то"
App Compat 24.2.1 содержит 16.5 K методы
Google Play Services GCM 9.6.1 содержит 16.7 K методов
Поэтому, если вы создали простое приложение Hello world, которое имеет App Compat 24.2.1, вы уже 1/4 пути пересечь ограничение методов single dex


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

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