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

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

INSTALL_FAILED_DEXOPT

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

Ответ 1

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

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

Wipe User Data option when starting android emulator

Ответ 2

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

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

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

Ответ 3

В вашей старой версии приложения, которое вы устанавливаете, есть зависимые библиотеки/банки, которые были изменены. Я столкнулся с этой проблемой при обновлении других файлов 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!

Whoo hoo.

Ответ 4

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

Сборкa > Чистый проект

Ответ 5

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

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

В моем случае несколько или конфликтующие версии 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)

Ответ 6

попробуйте мой ответ fooobar.com/questions/56282/...

если вы используете Android-версию 2.0, ОТКЛЮЧИТЕ мгновенный запуск.

FYI, мгновенный запуск - новая функция от android studio 2.0 (я никогда не использовал его > . <)

как отключить: предпочтения → сборка, выполнение и развертывание → мгновенный запуск → отключить, затем работает как magic

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

Ответ 7

Я изменил размер ОЗУ и внутреннюю емкость хранилища эмулятора Теперь IT IS Work... в eclipse AVD manager

Ответ 8

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

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

Ответ 9

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

Ответ 10

Я работаю с Android Studio и имею ту же ошибку.

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

Ответ 11

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

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

Ответ 12

INSTALL_FAIL_DEXOPT обычно имеет отношение к пределу, помещенному в classes.dex. На чем-нибудь до 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

Ответ 13

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

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

Ответ 14

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

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

Ответ 15

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

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

Ответ 16

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

Ответ 17

У меня было отключено приложение и, тем не менее, получилась ошибка INSTALL_FAILED_DEXOPT. Если вы работаете с Android Studio/ gradle: gradle clean помогло, Приветствия.

Ответ 18

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

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

android {
    compileSdkVersion 22
    buildToolsVersion "22"

Ответ 19

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
    }

Ответ 20

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

Ответ 21

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

Ответ 22

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

Ответ 23

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

Ответ 24

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

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

Ответ 26

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

Ответ 27

У меня была эта проблема, когда в именах моих методов (из-за, из всех вещей, копирование/вставка из файла PowerPoint) были некоторые символы Unicode, которые Dalvik не понравился. Вы можете увидеть это, посмотрев вывод Logcat при попытке установить APK.

Это было на реальном устройстве.

Ответ 28

Решено, исправив дату на телефоне (это была некоторая дата по умолчанию 01.01.1980) и очистка проекта.

Ответ 29

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

Ответ 30

Я столкнулся с этой проблемой, когда пытался обновить новые инструменты сборки 24.0.1. Интернет-соединение было потеряно, а инструменты не были загружены успешно, после чего я получил эту ошибку и потратил много времени на ее решение. Но когда я успешно обновил инструменты сборки - проблема решена. Удачи.