О MultiDex много постов. Иногда у меня возникали ошибки, которые решались в том числе multiDexEnabled true
в defaultConfig
разделе моего build.gradle.
Но что именно это за функция? Каковы сценарии его использования?
О MultiDex много постов. Иногда у меня возникали ошибки, которые решались в том числе multiDexEnabled true
в defaultConfig
разделе моего build.gradle.
Но что именно это за функция? Каковы сценарии его использования?
Ответы:
Цитата из документации :
Файлы приложения Android (APK) содержат исполняемые файлы байт-кода в виде файлов Dalvik Executable (DEX), которые содержат скомпилированный код, используемый для запуска вашего приложения. Спецификация исполняемого файла Dalvik ограничивает общее количество методов, на которые можно ссылаться в одном файле DEX, до 65 536, включая методы платформы Android, методы библиотеки и методы в вашем собственном коде. Чтобы преодолеть этот предел, необходимо настроить процесс сборки приложения для создания более одного файла DEX, что называется конфигурацией multidex.
Итак, особенность такова: она позволяет компилировать ваше сложное приложение. Сценарии для его использования - это когда ваше приложение не может скомпилироваться из-за достижения предела ссылок на метод DEX в 64 КБ. Это выглядит как ошибка сборки, например:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
В одном файле .dex может быть 65 536 методов (ссылок), поэтому, если количество ссылок превышает 65 536, вы выбираете multidex.
Приложение Android компилируется в файл .dex, который, в свою очередь, архивируется в один файл .apk.
DVM (виртуальная машина Dalvik) использует файл / файлы .dex для выполнения байт-кодов.
Из-за чего количество ссылок превышает 65 536 лимитов?
Написанные вами методы + методы Android Framework + методы сторонней библиотеки (например, Volley, Retrofit, Facebook SDK и т. Д.).
Я где-то читал.
App Compat 24.2.1 содержит 16,5 тыс. Методов.
Google Play Services GCM 9.6.1 содержит 16,7 тыс. Методов.
Итак, если вы создали простое приложение Hello world с App Compat 24.2.1, вы уже 1/4 способ пересечь предел методов single dex
Dex означает Dalvik Executable, который процессор виртуальных машин Google (Dalvik) использует для обработки приложений Android. Android был создан с учетом небольших и простых приложений, и ограничения на один-единственный исполняемый файл Dalvik взяли крышу над ссылками на код в 65 536 методах. Из-за этой проблемы и того, как машина Dalvik обрабатывает выполнение кода, были некоторые проблемы с компиляцией и вызовом до интеграции Monkey Patch или MultiDex . Интеграция MultiDex в Android Studio позволяет разработчикам Android компилировать и выполнять кодовую базу с помощью более 65 536 методов!
Официальный сайт разработчика Android.
If your minSdkVersion is set to 21 or higher, multidex is enabled by default and you do not need the multidex support library.