Ошибка INSTALL_FAILED_DEXOPT в Android 5.0 в режиме Release

У меня странная проблема с INSTALL_FAILED_DEXOPT . Это происходит в устройствах android 5.0 как в эмуляторе, так и в устройствах. И странно, что он хорошо работает при построении варианта в режиме отладки.

Если я перейду на Release, я получаю это исключение только на 5.0 устройствах. Я тщательно просмотрел все ссылки, доступные в Google.

  1. Протрите данные

  2. Купил новое устройство, где я могу установить его в первый раз, но все же сталкиваюсь с той же проблемой.

  3. Проект имеет поддержку multidex: – true в gradle

  4. Также попытался изменить версию инструмента SDK и построить версию инструмента до последней версии, которая составляет 24.4.0.

Я использую это устройство Введите описание изображения здесь

Когда я строю в режиме выпуска, я получаю эту ошибку Введите описание изображения здесь

В консоли

Введите описание изображения здесь

Это тип сборки, который мы используем.

buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' signingConfig signingConfigs.release } debug { applicationIdSuffix ".debug" minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' signingConfig signingConfigs.debug } } 

Изображение используемых инструментов SDK:

Введите описание изображения здесь Я могу заверить вас, что никогда не было сборки, установленной устройством. Я уже очистил все, если он уже установлен.

Может ли кто-нибудь в этом мире помочь мне в этом вопросе. Потому что это заставляет нас сходить с ума …..

Когда apk устанавливается на android, android выполняет dex2opt для оптимизации. Сообщение об ошибке INSTALL_FAILED_DEXOPT означает, что ваше устройство Android не может оптимизировать dex. Это может быть связано с размером dex. Вы можете найти предупреждение «LinearAlloc Limit» или сообщение об ошибке в мониторе Android.

Если это проблема размера dex. Добавьте это в конфигурацию.

 afterEvaluate{ tasks.matching { it.name.startsWith('dex') }.each { dx -> if(dx.additionalParameters == null){ dx.additionalParameters = [] } //To avoid linearAlloc limit problem on Gingerbread and below dx.additionalParameters += "--set-max-idx-number=50000" dx.additionalParameters += "--minimal-main-dex" } 

}

И Instant Run = Вкл. Выкл.

Эта проблема может возникнуть из-за несоответствия sdks между Android Studio и проектом. Проект использовал старый sdk, и как только я сделал их одинаковыми, я очистил и перестроил проект, и все было хорошо.

Посмотрите, было ли ваше приложение по ошибке установлено в вашей гостевой учетной записи вашего телефона.

Если да, то удалите его или удалите из него.

Сделайте это для всех учетных записей пользователей в своем телефоне.

Дополнительные советы: –

Build -> Чистый проект Build -> Реконструкция проекта

Это может быть связано с другой версией инструментов сборки Gradle в вашем файле сборки модуля и проекта. Убедитесь, что они используют одну и ту же версию в обоих файлах, очищают и строят снова, и все должно быть хорошо.

Похоже, что multidex может быть вашей проблемой. Android обрабатывает это изначально на устройствах Lollipop (что может объяснять, что некоторые устройства ведут себя корректно, но другие проблемы), но использует библиотеку multidex на более старых устройствах, что может объяснить, почему более старые устройства ведут себя одинаково (см. http://developer.android.com /tools/building/multidex.html ).

Вы достаточно близки к пределу 65k, что вы можете использовать ProGuard или временно удалить одну из ваших зависимостей, чтобы вам не понадобилось многое? Несмотря на наличие библиотеки для ее поддержки, обычно рекомендуется уменьшить количество меток, чтобы оно вам не понадобилось. Я знаю, что некоторые приложения действительно могут понадобиться, но сначала стоит проверить это.

Также изучите использование гранулированных модулей Google Play Services. Если вы загружаете всю GMS, переход на гранулированный способ может значительно сократить количество ваших методов: http://android-developers.blogspot.com/2014/12/google-play-services-and-dex-method.html

Попробуйте удалить это приложение и всех других, у кого есть подпись на вашем устройстве. Очистите проект и перезапустите установку. Кроме того, вам следует рассмотреть возможность установки вашего приложения с помощью другого средства, который используется ADB, например, с помощью dropbox.

Перезапуск эмулятора из Android SDK и AVD Manager и выбор опции Wipe User Data решили эту проблему для меня.

У меня такая же проблема при тестировании кода в телефоне. Я выполнил следующие шаги

  1. Очистить и создать код
  2. Обновите Android Studio до последней версии

Он решил мою проблему и, пожалуйста, проверьте свое дело.

 afterEvaluate{ tasks.matching { it.name.startsWith('dex') }.each { dx -> if(dx.additionalParameters == null){ dx.additionalParameters = [] } //To avoid linearAlloc limit problem on Gingerbread and below dx.additionalParameters += "--set-max-idx-number=65535" dx.additionalParameters += "--minimal-main-dex" } } 

Эти проблемы могут возникнуть при установке apk debug / release apk, когда relese / debug apk уже установлен в вашем устройстве / эмуляторе.means, если вы устанавливаете debug apk, когда существует версия apk, или если вы устанавливаете release apk, тогда как debug apk существует .so uninatall apk и установить его снова