Подтвердить что ты не робот

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

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

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

  • Протрите данные

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

  • Проект имеет поддержку multidex: - true в gradle

  • Также попытался изменить версию инструмента 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:

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

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

4b9b3361

Ответ 1

когда 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 = Вкл. выкл.

Ответ 2

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

Ответ 3

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

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

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

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

Сборка → Очистить проект Build → Проект перестройки

Ответ 4

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

Ответ 5

Похоже, что 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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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

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

Ответ 9

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"
   }
}

Ответ 10

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