Ответ 1
Перезапуск эмулятора из Android SDK and AVD Manager
и выбор опции Wipe User Data
решил эту проблему для меня.
Вы можете найти опцию, выделенную в следующем изображении:
Я занимаюсь разработкой приложения для Android с использованием Android 2.2, размер APK моего приложения составляет 22,5 МБ, и я хотел бы создать новую сборку для планшета Samsung. Я получил следующую ошибку:
INSTALL_FAILED_DEXOPT
Как мне решить эту ошибку?
Перезапуск эмулятора из Android SDK and AVD Manager
и выбор опции Wipe User Data
решил эту проблему для меня.
Вы можете найти опцию, выделенную в следующем изображении:
Казалось, это связано с дисковым пространством для меня. Недавно развернутый эмулятор 5.1 загружается с ошибкой "недостаточно места на диске" - и, глядя на свойства эмулятора, пространство по умолчанию, выделяемое для внутренней памяти, составляет 800 МБ, что кажется мало.
Решение, поэтому было увеличить это (я пошел на 4 ГБ). Как ни странно, эмулятор по-прежнему загружается с тем же предупреждением о дисковом пространстве, но его сброс на заводские настройки (Настройки → Резервное копирование и восстановление внутри эмулятора) решил это полностью для меня.
Просто немного странно, что это не работает из коробки с настройками по умолчанию.
В вашей старой версии приложения, которое вы устанавливаете, есть зависимые библиотеки/банки, которые были изменены. Я столкнулся с этой проблемой при обновлении других файлов 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.
Если вы используете Android Studio, попробуйте очистить свой проект:
Сборкa > Чистый проект
Кажется, что это сообщение об ошибке может иметь много разных причин. Случай, с которым я столкнулся, был на реальном устройстве (поэтому решения эмуляторов эмуляторов не применялись).
В основном, когда это происходит, установите для фильтра 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)
попробуйте мой ответ fooobar.com/questions/56282/...
если вы используете Android-версию 2.0, ОТКЛЮЧИТЕ мгновенный запуск.
FYI, мгновенный запуск - новая функция от android studio 2.0 (я никогда не использовал его > . <)
как отключить: предпочтения → сборка, выполнение и развертывание → мгновенный запуск → отключить, затем работает как magic
Наслаждайтесь!
Я изменил размер ОЗУ и внутреннюю емкость хранилища эмулятора Теперь IT IS Work... в eclipse AVD manager
Столкнулся с этим с Android Studio 3.4.1, но с более старым (5.0) эмулятором. Эта процедура (на Mac) устранила проблему:
Мне нужно было отключить Instant Run, чтобы исправить проблему. Чтобы отключить Instant Run в OS X, перейдите в Android Studio > Настройки > Сборка, выполнение, развертывание > Мгновенный запуск затем удалите галочку с Enable Instant Run to hot swap code/resource changes on deploy (default enabled)
.
Я работаю с Android Studio и имею ту же ошибку.
Помогло удалить папку сборки основного модуля. После удаления все возвращается к нормальному.
У меня была такая же проблема сегодня с Android Studio на новом виртуальном устройстве. Оказалось, что я скачал образ x86_64
, воссоздающий VD с эквивалентным образом x86
исправил его.
Я ожидал получить INSTALL_FAILED_NO_MATCHING_ABIS
в этом случае, но каким-то образом я застрял с INSTALL_FAILED_DEXOPT
INSTALL_FAIL_DEXOPT обычно имеет отношение к пределу, помещенному в classes.dex. На чем-нибудь до ICS dexopt не удастся на что-либо более 5 МБ. В последних версиях Android используется буфер размером 8 или 16 МБ.
Проверьте размер classes.dex в APK. Было бы также полезно посмотреть, что такое ваш метод, поскольку dex имеет ограничение на метод/поле 65536.
Литература:
Я столкнулся с этой проблемой после включения флага jumboMode в сборке (dex.force.jumbo=true
). Все работало отлично на новых Android-устройствах, но установка не выполнялась на Gingerbread.
Итак, если ваше приложение требует jumbo-режима из-за раздражающего ограничения на 65 тысяч, попробуйте отрезать некоторые неиспользуемые коды/строки и установить jumbo-режим обратно на false.
classes.dex
не попадает в окончательный .apk
. Выполнение gradlew --offline clean && gradlew --offline assembleDebug
фиксированных вещей для меня каждый раз. С этого момента вы снова можете запустить приложение из Android Studio.
РЕДАКТИРОВАТЬ: Перед тем, что я сказал выше, перейдите в диспетчер задач и убейте все процессы cmd.exe
и conhost.exe
(или только тот, в котором aapt
застрял). В противном случае aapt
сработает с самого начала при запуске из командной строки с печально известной ошибкой -1073741819
.
Я получил ту же ошибку и исправил ее, увеличив размер внутренней памяти.
Внутренняя память изначально была установлена в 32 МБ (я знаю), а затем я установил на нее пару apks, что оставило меньше места, чем было необходимо для того, который будет установлен.
проверьте место на вашем устройстве
У меня было отключено приложение и, тем не менее, получилась ошибка INSTALL_FAILED_DEXOPT. Если вы работаете с Android Studio/ gradle: gradle clean помогло, Приветствия.
в 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
}
Единственное решение, которое помогло мне исправить это, - увеличить ОЗУ виртуальной машины до 4 ГБ.
Я получал эту проблему при попытке установить на 2.3 устройствах (отлично в 4.0.3). Это закончилось тем, что из-за проекта lib, который я использовал, было несколько банок, которые были для вещей, уже находящихся в android, например. Партизаны HttpClient и XML и т.д. Глядя на logcat
, я нашел это, поскольку он говорил мне, что он пропускает классы из-за того, что они уже присутствуют. Хорошая бесполезная оригинальная ошибка там!
У меня было это тестирование ошибок на реальном устройстве. Очистка кеша/деинсталляция, перезагрузка для меня все не сработала, удалив содержимое папки сборки:) (Android studio)
Нет никакого общего решения, вам нужно найти сообщение об ошибке на вашем Logcat, чтобы понять его. Иногда это класс, который не может быть "dexed" из-за использования класса, недоступного для указанного целевого API, например. Или это может быть класс, который вы делаете ссылкой в своем коде, но библиотека, в которой он находится, не упакована.
Рассмотрите возможность использования proguard для сжатия вашего APK. У меня такая же проблема, если я пытаюсь установить большой 25 МБ + APK на старом устройстве Samsung Galaxy Ace 2.3.6 без сокращения/оптимизации кода с помощью proguard.
Режим Jumbo и перезапуск устройства не работают.
В моем случае это была ошибка в плагине kotlin, версия 1.1.51
https://youtrack.jetbrains.com/issue/KT-20034
Эта ошибка появилась на старых устройствах (API 16).
Исправлено это, удалив аннотации @Parcelize и заменив их на этот генератор кода: https://github.com/nekocode/android-parcelable-intellij-plugin-kotlin
Я нашел там одну причину этой проблемы: недостаточно места на мобильном телефоне. Поэтому я удалил несколько приложений с мобильного телефона, и это исправлено.
У меня была эта проблема, когда в именах моих методов (из-за, из всех вещей, копирование/вставка из файла PowerPoint) были некоторые символы Unicode, которые Dalvik не понравился. Вы можете увидеть это, посмотрев вывод Logcat при попытке установить APK.
Это было на реальном устройстве.
Решено, исправив дату на телефоне (это была некоторая дата по умолчанию 01.01.1980) и очистка проекта.
Я изменил версию поддержки Android версии 4 для sdk 21 и имел эту ошибку. Поэтому я вернул версию поддержки старой версии (до 21 года), и она сработала. Ошибка произошла только в android 2.3
Я столкнулся с этой проблемой, когда пытался обновить новые инструменты сборки 24.0.1. Интернет-соединение было потеряно, а инструменты не были загружены успешно, после чего я получил эту ошибку и потратил много времени на ее решение. Но когда я успешно обновил инструменты сборки - проблема решена. Удачи.