Что такое multidex android

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

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

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

ОТВЕТЫ

Ответ 1

Файлы приложения Android (APK) содержат исполняемые файлы байт-кода в виде файлов Dalvik Executable (DEX), которые содержат скомпилированный код, используемый для запуска вашего приложения. Спецификация исполняемого файла Dalvik ограничивает общее количество методов, на которые можно ссылаться в одном файле DEX, до 65 536, включая методы каркаса Android, методы библиотеки и методы в вашем собственном коде. Чтобы преодолеть этот предел, необходимо настроить процесс создания приложений для создания более одного файла DEX, известного как многоэлементная конфигурация.

Итак, эта функция: она позволяет компилировать сложное приложение. Сценарии его использования — это когда ваше приложение не удается скомпилировать из-за попадания в листинг 64K DEX. Это выглядит как ошибка сборки, например:

Ответ 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

Источник

Unity — Enable Multidex или слишком много методов

С чего все началось

Всем привет. На определенном этапе разработки игры под Android на движке Unity я столкнулся с одной проблемой при билде. После добавления в проект таких плагинов как Appodeal и Google Play Games количество используемых методов превысило 65K и во время билда появилась следующая ошибка:

Почитав документацию Appodeal, понял что надо включить Multidex. Решил это сделать. На сайте была ссылка с инструкцией для Android Studio. А мы то с вами на Unity, что же делать?

Читайте также:  Формат rtf для андроид

А все довольно просто надо сделать всего три действия:

Включить систему сборки Gradle

Чтобы в своем проекте на Android включить систему Gradle в Unity выполним пару действий

  1. В Unity откройте Build Settings (File >>Build Settings)
  2. Если вы еще не выбрали платформу, то пора сделать это (Platform >>Android)
  3. В списке Build System выбираем Gradle (Build System >>Gradle )

Изменение настроек Gradle

1. Чтобы изменить настройки Gradle, вам сначала нужно получить файл настроек Gradle, который расположен в папке (Assets/Plugins/Android/mainTemplate.gradle). Если файла mainTemplate.gradle скачайте по ссылке и вставьте по адресу Assets/Plugins/Android/:

2. Если файл у вас уже есть, добавляем строку multiDexEnabled true в объект defaultConfig

3. Если минимальный уровень API Android равен 20 или ниже, добавьте эту строку compile ‘com.android.support:multidex:1.0.1’

4. Закомментируем или удалим строки:

Окончательный вид файла:

Инициализация Multidex

Если минимальный уровень API Android, установленный на 20 или ниже.

Обновите файл манифеста, расположенный в Assets/Plugins/Android/AndroidManifest.XML. Если у вас нет этого файла, вам придется его создать. Вы можете найти AndroidManifest по умолчанию.xml в месте установки Unity. Но вам также придется вручную применить параметры проекта вашего приложения: имя пакета, разрешения, параметры конфигурации и другую информацию.

Если вы только что создали новый файл манифеста или у вас уже был он, вы просто добавляете этот параметр(android:name) следующим образом:

На этом все. Ошибка исчезнет, и вы спокойно сбилдите свой проект.

Источник

Что такое Android MultiDex?

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

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

6 ответов

Файлы приложения Android (APK) содержат исполняемые файлы байт-кода в виде файлов Dalvik Executable (DEX), которые содержат скомпилированный код, используемый для запуска вашего приложения. Спецификация исполняемого файла Dalvik ограничивает общее количество методов, на которые можно ссылаться в одном файле DEX, до 65 536, включая методы платформы Android, библиотечные методы и методы в вашем собственном коде. Чтобы преодолеть это ограничение, необходимо настроить процесс сборки приложения для создания более одного файла DEX, известного как мультидекс конфигурация.

Итак, особенность: она позволяет вашему сложному приложению компилироваться. Возможны сценарии его использования, когда ваше приложение не может скомпилироваться из-за превышения лимита ссылки на метод 64K DEX. Это выглядит как ошибка сборки, например:

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

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

Больше объяснений!

Приложение для Android скомпилировано в файл.dex, который, в свою очередь, заархивирован в один файл.apk.
DVM (виртуальная машина Dalvik) использует файл / файл.dex для выполнения байт-кодов.

Что приводит к тому, что количество ссылок превышает 65 536 пределов?
Методы, написанные вами + методы Android Framework + методы сторонней библиотеки (например, Volley,Retrofit, Facebook SDK и т. Д.).
Я прочитал «где-то»
App Compat 24.2.1 содержит 16,5 тыс. Методов
Сервисы Google Play GCM 9.6.1 содержат методы по 16,7 тыс.
Так что, если вы создали простое приложение Hello world, в котором есть App Compat 24.2.1, вы уже 1/4 способа преодолеть ограничение на один метод dex

Читайте также:  Android 11 redmi 4 prime

Источник

Русские Блоги

Android Multidex использование и принцип реализации

Android Multidex использование и принцип реализации

В Android файл Dex может хранить до 65536 методов, что является коротким диапазоном типов. Однако с увеличением количества методов приложения, когда файл Dex превышает число 65536 методов, во время упаковки будет выдано исключение.

Чтобы решить эту проблему, Google запустил официальное решение: MultiDex в Android5.0.

  • При упаковке приложение делится на несколько dex, например: classes.dex, classes2.dex, classes3.dex . при загрузке эти dex добавляются в массив, соответствующий DexPathList, что решает ограничение количества методов.
  • После Andorid 5.0 виртуальная машина ART, естественно, поддерживает MultiDex.
  • До выпуска Andorid 5.0 система загружала только один основной dex, а другой dex загружал MultiDex.

1. Используйте

Как пользоваться, лучше всего обратиться к официальной документации Google, подробно написанной:

Вот краткое объяснение:

1. minSdkVersion 21 или выше

Если да android 5.0 Вышеуказанные устройства должны быть установлены только на multiDexEnabled true

2. minSdkVersion 20 или ниже

Если вам нужно адаптировать android 5.0 Требуется следующее оборудованиеБиблиотека поддержки исполняемых пакетов Dalvik

Java-код, наследование MultiDexApplication Или в Application Добавить в MultiDex.install(this);

Во-вторых, принцип MultiDex ниже Android 5.0

Примечание:
Версия, на которой основан исходный код com.android.support:multidex:1.0.3

  • android 5.0 следующий Виртуальная машина Dalvik Только один может быть загружен Основной класс.декс ;
  • android.support.multidex.MultiDex.install(this) Здесь android 5.0 следующий Виртуальная машина Dalvik Совместимый;

Здесь мы представляем две части: одна — загрузка файлов dex, другая — извлечение файлов dex.

2.1. Загрузка файлов Dex

Следующее через отслеживание MultiDex.install(this); Исходный код, понять принцип его реализации.

MultiDex.install(this);

трек MultiDex.install(this); Исходный код

Отслеживание MultiDex.doInstallation

Отслеживание MultiDex.doInstallation и просмотр принципа реализации MultiDex

Игнорируя логику извлечения и логику проверки файла dex, следующие три вещи в основном выполняются в приведенном выше коде:

  • Очистить каталог кеша «/ data / user / 0 / $ / files / primary-dexes»
  • Используйте инструмент MultiDexExtractor для извлечения dex из APK в каталог «/ data / user / 0 / $ / code_cache / second-dexes»
  • Загрузите dex в каталог «/ data / user / 0 / $ / code_cache / primary-dexes»

Смотреть ниже MultiDex.installSecondaryDexes Способ понять MultiDex Конкретная реализация

MultiDex.V4.install(loader, files);

Разные версии систем Android имеют разные механизмы загрузки классов, поэтому они делятся на V19, V14 и V4 Установка в трех случаях.

Здесь мы смотрим на исходный код следующего V19

С помощью метода install () в V19 стал ясен вопрос о том, как MultiDex загружает файлы Dex:

  • Добавьте файл dex в APK-файл, кроме основного файла dex, в PathClassLoader (он же BaseClassLoader) в DexPathListde Element[] В массиве. Это будет проходить все файлы dex при загрузке класса, гарантируя, что упакованные классы могут быть загружены нормально.

2.2 Извлечение файлов Dex

Как упоминалось ранее:
MultiDexExtractor Роль этого инструмента поставить АПК dex Файл извлекается в /data/user/0/com.xiaxl.demo/code_cache/secondary-dexes В каталоге

Метод построения MultiDexExtractor

MultiDexExtractor.load

APK dex Извлечение файла

MultiDexExtractor.performExtractions()

2.3 Другие связанные коды

clearOldDexDir(Context context)

3. Резюме

На данный момент принцип MultiDex установки нескольких dex ясен.

  • Распакуйте файл dex определенным образом;
  • Положить эти Файл dex добавляется в массив Element [] DexPathList ;
    Этот процесс должен быть как можно раньше, поэтому он обычно используется в методе attachBaseContext () приложения.

Кроме того, hotfix Технология горячего ремонта проходит определенным образом Вставьте восстановленный dex перед массивом Element [] DexPathList Реализуйте предварительную загрузку отремонтированного класса.

Источник

Что такое Android MultiDex?

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

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

3 ответов

файлы приложений Android (APK) содержат исполняемые файлы байт-кода в виде исполняемых файлов Dalvik (DEX), которые содержат скомпилированный код, используемый для запуска приложения. Исполняемая спецификация Dalvik ограничивает общее количество методов, на которые можно ссылаться в одном файле DEX, 65 536, включая методы платформы Android, методы библиотеки и методы в вашем собственном коде. Преодоление этого предела требует, чтобы процесс сборки приложения настраивается для создания нескольких файлов DEX, известных как многодексная конфигурация.

Итак, функция: она позволяет компилировать ваше сложное приложение. Сценарии для его использования, когда ваше приложение не удается скомпилировать из-за попадания 64K DeX метод ограничения ссылки. Это отображается как ошибка сборки, например:

Это просто

один .файл 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

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

Источник

Читайте также:  Что значит модифицированная версия android
Оцените статью