Как решить ошибку INSTALL_FAILED_DEXOPT?

Я занимаюсь разработкой приложения для Android с использованием Android 2.2, размер APK моего приложения составляет 22,5 МБ, и я хотел бы создать новую сборку для планшета Samsung. Я получил следующую ошибку:

INSTALL_FAILED_DEXOPT

Как мне решить эту ошибку?

47 ответов

Казалось, это связано с дисковым пространством для меня. Недавно развернутый эмулятор 5.1 загружается с ошибкой "недостаточно места на диске" - и, глядя на свойства эмулятора, пространство по умолчанию, выделяемое для внутренней памяти, составляет 800 МБ, что кажется мало.

Решение, поэтому было увеличить это (я пошел на 4 ГБ). Как ни странно, эмулятор по-прежнему загружается с тем же предупреждением о дисковом пространстве, но его сброс до заводских настроек ("Настройки" - "Резервное копирование и восстановление внутри эмулятора") решил для меня полностью.

Просто немного странно, что это не работает из коробки с настройками по умолчанию.

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

Вы можете найти опцию, как выделено на приведенном ниже изображении:

Параметр Wipe User Data при запуске эмулятора Android

Ваша старая версия приложения, которое вы устанавливаете, имеет зависимые библиотеки / файлы, которые были изменены. Я столкнулся с этой проблемой при обновлении других файлов jar, на которые ссылалось мое приложение.

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

Настройки -> Приложения -> Управление приложениями ->[Найти и удалить приложение]

Ошибки INSTALL_FAILED_DEXOPT не должны возникать. подобно

[2011-06-14 01:23:40 - ProtectYourself] Installing ProtectYourself.apk...
[2011-06-14 01:24:26 - ProtectYourself] Installation error: INSTALL_FAILED_DEXOPT
[2011-06-14 01:24:26 - ProtectYourself] Please check logcat output for more details.
[2011-06-14 01:24:26 - ProtectYourself] Launch canceled!

Ууууууууу.

Попробуй это с Android Studio 3.4.1, но используя более старый (5.0) эмулятор. Эта процедура (на Mac) устранила проблему:

  1. остановить эмулятор
  2. cd ~/.android/avd/[имя эмулятора].avd
  3. rm *.lock
  4. стереть эмулятор
  5. запустить эмулятор

Если вы используете Android Studio, попробуйте очистить ваш проект:

Построить> Чистый проект

Кажется, что это сообщение об ошибке может иметь много разных причин. Случай, с которым я столкнулся, был на реальном устройстве (таким образом, решения основ эмулятора не применялись).

Обычно, когда это происходит, установите для фильтра Logcat значение Verbose или Warn, что поможет вам получить больше информации о причине.

В моем случае несколько или конфликтующие версии JUnit были включены в проект, над которым я работал (большая существующая кодовая база). Приложение Android, которое я пытался развернуть, содержало несколько библиотечных проектов в качестве зависимостей, и я по ошибке настроил несколько файлов JUnit JAR.

Я обнаружил это на основе серии сообщений Logcat. Обратите внимание, что строка WARN указывает причину:

DEBUG/dalvikvm(4808): DexOpt: 'Ljunit/framework/TestSuite$1;' has an earlier definition; blocking out
11-06 14:30:10.973: WARN/dalvikvm(4808): Invalid file flags in class Ljunit/runner/Sorter$Swapper;: 0209
11-06 14:30:10.973: null/libc(4808): Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1), thread 4808 (dexopt)

Я изменил размер оперативной памяти и внутреннюю емкость эмулятора. Теперь он работает... в Eclipse AVD Manager

Попробуй мой ответ /questions/19363014/reshenie-problemyi-s-ustanovkoj-dexopt/19363024#19363024

Если вы используете Android Studio 2.0, отключите мгновенный запуск.

К вашему сведению, мгновенный запуск - это новая функция от Android Studio 2.0 (я никогда не использовал ее>.<)

как отключить: настройки -> сборка, выполнение и развертывание -> мгновенный запуск -> отключить, затем работает как по волшебству

Наслаждайтесь!

Единственное решение, которое помогло мне исправить это, заключалось в увеличении ОЗУ виртуальной машины до 4 ГБ.

Мне нужно было отключить Instant Run, чтобы исправить проблему. Чтобы отключить мгновенный запуск в OS X, выберите " Android Studio" > " Установки" > " Сборка, выполнение, развертывание" > " Быстрый запуск", а затем снимите галочку с Enable Instant Run to hot swap code/resource changes on deploy (default enabled),

У меня была такая же проблема сегодня с Android Studio на новом виртуальном устройстве. Оказалось, я скачал x86_64 изображение, воссоздающее VD с эквивалентным x86 изображение исправило это.

Я ожидал получить INSTALL_FAILED_NO_MATCHING_ABIS в этом случае, но как-то я застрял с INSTALL_FAILED_DEXOPT

Я работаю с Android Studio и была такая же ошибка.

Помогло удаление папки сборки основного модуля. После удаления все возвращается на круги своя.

Проверьте место на вашем устройстве

INSTALL_FAIL_DEXOPT обычно имеет отношение к пределу, установленному на classes.dex. На любом pre-ICS dexopt не будет работать ни на чем более 5 МБ. Последние версии Android используют буфер 8 или 16 МБ.

Проверьте размер файла classes.dex в вашем APK. Также было бы хорошо посмотреть, каков счет вашего метода, так как dex имеет 65536 предел метода / поля.


Рекомендации:

Ошибка при установке приложения (INSTALL_FAILED_DEXOPT)

https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920

Как уменьшить код - лимит метода 65k в dex

Я столкнулся с этой проблемой после включения флага jumboMode в сборке (dex.force.jumbo=true). Все работало нормально на новых устройствах Android, но установка на Gingerbread не удалась.

Поэтому, если ваше приложение требует джамбо-режима из-за надоедливого ограничения в 65 тыс., Попробуйте обрезать неиспользуемый код / ​​строки и установить для джамбо-режима значение false.

classes.dex не выходит в финал .apk, Бег gradlew --offline clean && gradlew --offline assembleDebug исправил вещи для меня каждый раз. С этого момента вы можете снова запустить приложение из Android Studio.

РЕДАКТИРОВАТЬ: прежде чем я сказал выше, зайдите в диспетчер задач и убить все cmd.exe а также conhost.exe процессы (или только тот, в котором aapt застрял). Иначе aapt будет падать с этого момента при запуске из командной строки с печально известной ошибкой -1073741819,

Я получил ту же ошибку и исправил ее, увеличив размер внутреннего хранилища.

Внутреннее хранилище было изначально настроено на 32 МБ (я знаю), а затем я установил на него пару apks, которые оставили меньше места, чем нужно для установки.

Здесь много ответов, но, возможно, это может помочь кому-то, у меня была эта проблема с настоящим устройством, а проблема была с D8

попробуйте добавить это в свой gradle.properties, и это сработает для меня

android.enableD8=false
android.enableD8.desugaring= false

Я удалил приложение и, тем не менее, получил ошибку INSTALL_FAILED_DEXOPT. Если вы работаете с Android Studio / gradle: gradle clean помог мне, Cheers.

В build.gradle изменение скомпилировано и сборка до последней версии. и это сработало для меня.

================

android {
    compileSdkVersion 22
    buildToolsVersion "22"

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

targetSdkVersion 22//17==========================> установить это число меньше или равным версии ОС Android на устройствах может помочь

 defaultConfig {
        applicationId "software.nhut.personalutilitiesforlife"
        minSdkVersion 16
        targetSdkVersion 22//17==========================> set this number less then or equal to the version of Android OS on devices might help
        versionCode 5
        versionName "1.26"
        // Enabling multidex support.
        multiDexEnabled true
    }

Универсального решения не существует, вы должны найти ошибку, сообщенную на вашем Logcat, чтобы иметь возможность ее выяснить. Иногда это класс, который не может быть "dexed" из-за использования класса, например, недоступного в указанном Target API. Или это может быть класс, на который вы ссылаетесь в своем коде, но библиотека, в которой он находится, не упаковывается.

Я получал эту проблему при попытке установить на 2.3 устройства (отлично на 4.0.3). Это закончилось тем, что из-за проекта lib, который я использовал, было несколько jar-файлов, которые были для вещей, которые уже есть в Android, например, HttpClient, парсеры XML и т. Д. logcat заставил меня найти это, так как он говорил, что пропускает занятия, потому что они уже присутствуют. Хорошая бесполезная ошибка!

У меня была эта ошибка тестирования на реальном устройстве. Очистка кеша / удаление, перезапуск всего у меня не сработал, удаление содержимого папки сборки сделало:) (Android studio)

В моем случае это была ошибка в плагине kotlin версии 1.1.51

https://youtrack.jetbrains.com/issue/KT-20034

Эта ошибка появилась на старых устройствах (API 16).

Исправлено, удаляя аннотации @Parcelize и заменяя их следующим генератором кода: https://github.com/nekocode/android-parcelable-intellij-plugin-kotlin

Подумайте об использовании Proguard, чтобы уменьшить ваш APK. У меня та же проблема, если я пытаюсь установить большой 25MB+ APK на старое устройство Samsung Galaxy Ace 2.3.6 без сжатия / оптимизации кода с помощью proguard.

Jumbo mode и перезапуск устройства не работают.

В моем случае проблема возникала на некоторых устройствах с API 21 и 22. Настройка android:vmSafeMode="true" в манифесте под applicationтег решил проблему. Однако это не рекомендуется для сборок выпуска, поэтому я создал два файла xml в папке значений. По умолчанию для старых API:

<resources>
    <bool name="vm_safe_mode">true</bool>
</resources>

То же самое для API>= 23 с falseзначение. В этом случае устройства с более новой ОС не пострадают, а старые, по крайней мере, будут работать.

Для меня это был proguard, который вызывал INSTALL_FAILED_DEXOPT на некоторых устройствах Samsung с Android 5.x.

А именно я должен был добавить это в proguard - не уверен, почему это помогло.

-keepattributes LocalVariableTable

Я изменил свою версию поддержки Android версии 4 для SDK 21 и имел эту ошибку. Поэтому я вернулся к версии поддержки старой версии (до 21), и она работала. Ошибка происходила только в Android 2.3

Другие вопросы по тегам