О 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
источник
Что такое MultiDex в Android?
Dex означает Dalvik Executable, который процессор виртуальных машин Google (Dalvik) использует для обработки приложений Android. Android был создан с учетом небольших и простых приложений, и ограничения на один-единственный исполняемый файл Dalvik взяли крышу над ссылками на код в 65 536 методах. Из-за этой проблемы и того, как машина Dalvik обрабатывает выполнение кода, были некоторые проблемы с компиляцией и вызовом до интеграции Monkey Patch или MultiDex . Интеграция MultiDex в Android Studio позволяет разработчикам Android компилировать и выполнять кодовую базу с помощью более 65 536 методов!
источник
Официальный сайт разработчика Android.
источник
Это также позволяет Google (и другим) применять DRM, скажем ... widevine, в фрагментах кода, где это вызывает проблемы у большинства не разработчиков ..
источник