Я розробляю програму Android за допомогою Android 2.2, розмір APK мого додатка - 22,5 Мб, і я хотів би створити нову збірку для планшета Samsung. Я отримав таку помилку:
INSTALL_FAILED_DEXOPT
Як вирішити таку помилку?
Я розробляю програму Android за допомогою Android 2.2, розмір APK мого додатка - 22,5 Мб, і я хотів би створити нову збірку для планшета Samsung. Я отримав таку помилку:
INSTALL_FAILED_DEXOPT
Як вирішити таку помилку?
Відповіді:
Перезапуск емулятора з програми Android SDK and AVD Manager
та вибір параметра Wipe User Data
вирішив для мене цю проблему.
Ви можете знайти варіант, як виділено на зображенні нижче:
adb kill-server
тоді adb start-server
слід вирішити вашу проблему. Можливо, версія для старих існує, тоді спочатку видаліть її.
Здавалося, це стосується дискового простору для мене. Нещодавно запущений 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!
Ого-ну.
Якщо ви використовуєте Android Studio , спробуйте очистити свій проект:
Збірка> Очистити проект
Схоже, це повідомлення про помилку може мати багато різних причин. Випадок, на який я натрапив, знаходився на справжньому пристрої (тому рішення емуляторів не застосовувались).
В основному, коли це відбувається, встановіть LogCat фільтр Verbose або Попереджати , які допоможуть вам отримати більше інформації про причини.
У моєму випадку в проект, над яким я працював, було включено кілька чи суперечливих версій JUnit (велика існуюча база коду). У додатку Android, який я намагався розгорнути, було декілька бібліотечних проектів як залежних, і я помилково налаштував речі, щоб включити декілька файлів jar-файлів JUnit.
Я виявив це на основі серії повідомлень 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)
Натрапив на це за допомогою Android Studio 3.4.1, але використовуючи старіший (5.0) емулятор. Ця процедура (на Mac) вирішила проблему:
Я змінив розмір оперативної пам’яті та ємність зберігання інтернелів емулятора. Тепер він працює ... у затемненні AVD-менеджера
спробуйте мою відповідь https://stackoverflow.com/a/34918549/3737254
якщо ви використовуєте android studio 2.0, ВИМКНУЙТЕ миттєвий запуск.
FYI, миттєвий запуск - це нова функція від android studio 2.0 (я її ніколи не використовував>. <)
як відключити: налаштування -> складання, виконання та розгортання -> миттєвий запуск -> відключення, то працює як магія
Насолоджуйтесь!
Щоб вирішити проблему, мені потрібно було відключити функцію миттєвого запуску Щоб вимкнути функцію миттєвого запуску в OS X, перейдіть до Android Studio > Налаштування > Збірка, виконання, розгортання > Миттєвий запуск, а потім видаліть галочку з Enable Instant Run to hot swap code/resource changes on deploy (default enabled)
.
dexopt error. Application failed to install
. Я спробував це, перш ніж я виявив це: adb kill-server
adb start-server
перезапустивши Android Studio і заводські скидання пристрою.
У мене сьогодні був такий самий випуск із Android Studio на новому віртуальному пристрої. Виявилося, я завантажив x86_64
зображення, відтворивши VD з аналогічним x86
зображенням, зафіксованим ним.
Я очікував отримати INSTALL_FAILED_NO_MATCHING_ABIS
в цьому випадку, але я якось застрягINSTALL_FAILED_DEXOPT
x86
Не вдалося встановити установку . Після завантаження зображення та зміни емулятора на x86_64
помилку не було. Я використав системне зображення API 21.
x86_64
зображення замість x86
одного. Я також використовував API 21 AVD (Nexus 5).
Я працюю з Android Studio і мала таку ж помилку.
Видалення папки збірки головного Modul допомогло. Після видалення все прийде в норму.
INSTALL_FAIL_DEXOPT зазвичай пов'язаний з обмеженням, розміщеним на class.dex. На будь-якому попередньому ICS dexopt не зможе отримати більше ніж 5 Мб. В останніх версіях Android використовується буфер розміром 8 або 16 Мб.
Перевірте розмір class.dex в APK. Було б також добре дізнатися, що таке кількість методів, оскільки у dex є обмеження 65536 методу / поля.
Список літератури:
Помилка під час встановлення програми (INSTALL_FAILED_DEXOPT)
Я зіткнувся з цією проблемою після включення прапора jumboMode в build ( dex.force.jumbo=true
). На новіших Android-пристроях все працювало чудово, але інсталяція Gingerbread не вдалася.
Отже, якщо вашому додатку потрібен режим перемикання через набридливе обмеження 65 к., Спробуйте вирізати кілька невикористаних кодів / рядків і встановити режим перемикання назад на хибне.
classes.dex
не доходить до фіналу .apk
. gradlew --offline clean && gradlew --offline assembleDebug
Кожен раз, коли я працюю над фіксованими речами. З цього моменту ви можете знову запустити додаток із Android Studio.
EDIT: Перш ніж сказане вище, перейдіть до диспетчера завдань і вбийте всі cmd.exe
та conhost.exe
процеси (або лише той, в якому aapt
застрягли). В іншому випадку aapt
буде збій відтепер при запуску з командного рядка з сумнозвісною помилкою -1073741819
.
build.gradle
файл кореневого проекту . Серед залежностей buildscript повинні бути classpath 'com.android.tools.build:gradle:1.0.0-rc4'
.
перевірити місце на вашому пристрої
У мене було видалено додаток, і все-таки я отримав помилку INSTALL_FAILED_DEXOPT. Якщо ви працюєте з Android Studio / gradle: gradle clean зробив трюк для мене, ура.
Я отримував цю проблему при спробі встановити на 2.3 пристрої (добре на 4.0.3). Це в кінцевому підсумку через проект lib, який я використовував, мав декілька банок, які були для речей, які вже знаходяться в андроїді, наприклад, HttpClient та XML-аналізатори тощо. Дивлячись на logcat
мене, я знайшов це, оскільки він говорив мені, що він пропускає класи через те, що вони вже є теперішній. Приємна непомітна оригінальна помилка там!
Немає загального рішення, ви повинні знайти помилку, повідомлену на вашому Logcat, щоб мати змогу зрозуміти це. Іноді це клас, який не може бути 'dexed' через використання класу, недоступного, наприклад, у визначеному API Target. Або це може бути клас, на який ви посилаєтесь у своєму коді, але бібліотека, в якій він знаходиться, не пакується.
У моєму випадку це була помилка в плагіні kotlin, версія 1.1.51
https://youtrack.jetbrains.com/issue/KT-20034
Ця помилка з’явилася на старих пристроях (API 16).
Виправлено це шляхом видалення @Parcelize анотацій та заміни їх цим генератором коду: https://github.com/nekocode/android-parcelable-intellij-plugin-kotlin
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
}
У мене виникла ця проблема, коли в іменах моїх методів були деякі символи Unicode (через, скоріше, копіювання / вставлення з файлу Powerpoint), які Далвіку не сподобалось. Це можна побачити, переглянувши вихід Logcat під час спроби встановити APK.
Це було на справжньому пристрої.
Я змінив свою версію Android версії 4 для підтримки sdk 21 і стався ця помилка. Тож я повернувся до версії підтримки старої версії (до 21 року), і вона спрацювала. Помилка сталася лише в android 2.3
Я зіткнувся з цією проблемою, коли намагався оновити нові інструменти збирання 24.0.1. Підключення до Інтернету було втрачено, а інструменти не завантажувались успішно, після цього я отримав цю помилку і витратив багато часу, намагаючись її вирішити. Але коли я успішно оновив інструменти збирання - проблема вирішена. Удачі.