Android gives error "Cannot fit requested classes in a single dex file"
Android выдает ошибку "Не удается уместить запрошенные классы в один файл dex"
Я не знаю почему, но сегодня утром невозможно запустить мое приложение на моем мобильном телефоне. Я получаю это сообщение об ошибке:
Не удается уместить запрошенные классы в один файл dex. Попробуйте предоставить список main-dex.
# методы: 68061 > 65536 Сообщение {kind = ОШИБКА, text = Не удается уместить запрошенные классы в один файл dex. Попробуйте предоставить список main-dex.
Запускаю RN 0.62, и у меня это сработало при успешной сборке.
Обновить build.gradle
classpath('com.android.support:multidex:1.0.3')
Обновить defaultConfig
multiDexEnabled true
После этих 2 изменений перезапустите сборку gradle снова.
Ответ 3
Multidex не всегда является решением проблемы, верно, что он сгенерирует больше файлов dex, чтобы соответствовать количеству ваших методов, но обязательно не импортируйте больше методов, которые вам нужны, потому что в долгосрочной перспективе это сделает ваши сборки медленнее, чем раньше.
Например, если вам просто нужно использовать библиотеку местоположений из play services, у вас есть два варианта
Первый - это реализация целых библиотек play-services, которые будут поставляться с location
Все эти библиотеки могут содержать более 40 000+ методов (это только приблизительная оценка, я действительно не знаю общего количества), что близко к достижению 65536 предельных методов.
Вместо этого вы должны ориентироваться только на библиотеки, которые вы будете использовать, а не на весь набор библиотек
могло бы быть всего 50-100 методов для работы, что будет лучше во время сборки, чем загружать целую кучу методов из всего пакета библиотеки, которые вы никогда не будете использовать.
это всего лишь совет, позволяющий избежать получения
Не удается уместить запрошенные классы в один файл dex.
Для minSdkVersion выше Android 5.0 API 20 +
Android 5.0 и выше использует среду выполнения под названием ART, которая изначально поддерживает загрузку нескольких файлов dex из APK-файлов приложения. ART выполняет предварительную компиляцию во время установки приложения, которая сканирует файлы classes (..N).dex и компилирует их в один файл .oat для выполнения устройством Android. Для получения дополнительной информации о среде выполнения Android 5.0 см. раздел Введение.
Если вы ориентируетесь на устройства более низкого уровня (Android 4.1 API 16) или более ранних версий Android 5 (API 20)
Версии платформы до Android 5.0 используют среду выполнения Dalvik для выполнения кода приложения. По умолчанию Dalvik ограничивает приложения одним файлом байт-кода classes.dex для APK. Чтобы обойти это ограничение, вы можете использовать библиотеку поддержки multidex, которая становится частью основного файла DEX вашего приложения и затем управляет доступом к дополнительным файлам DEX и коду, который они содержат.
В последнем случае вам нужно будет использовать multidex
Ответ 4
В файле build.gradle (app): Добавьте следующее в зависимости: