Tworzę aplikację na Androida przy użyciu Androida 2.2, rozmiar pliku APK mojej aplikacji to 22,5 MB i chciałbym utworzyć nową kompilację dla tabletu Samsung. Otrzymałem następujący błąd:
INSTALL_FAILED_DEXOPT
Jak rozwiązać ten rodzaj błędu?
Tworzę aplikację na Androida przy użyciu Androida 2.2, rozmiar pliku APK mojej aplikacji to 22,5 MB i chciałbym utworzyć nową kompilację dla tabletu Samsung. Otrzymałem następujący błąd:
INSTALL_FAILED_DEXOPT
Jak rozwiązać ten rodzaj błędu?
Odpowiedzi:
Ponowne uruchomienie emulatora z poziomu Android SDK and AVD Manager
i wybranie opcji Wipe User Data
rozwiązało ten problem dla mnie.
Możesz znaleźć opcję, jak zaznaczono na poniższym obrazku:
adb kill-server
następnie adb start-server
powinien rozwiązać twój problem. Może być starsza aplikacja, a następnie ją najpierw odinstaluj.
Wydawało mi się, że jest to związane z miejscem na dysku. Nowo zaktualizowany emulator 5.1 uruchamia się z błędem „mało miejsca na dysku” - i patrząc na właściwości emulatora, domyślna przestrzeń przydzielona dla pamięci wewnętrznej wynosi 800 MB, co wydaje się mało.
Rozwiązaniem było zatem zwiększenie tego (poszedłem do 4GB). Co dziwne, emulator nadal uruchamia się z tym samym ostrzeżeniem o miejscu na dysku, ale przywrócenie go do ustawień fabrycznych (Ustawienia -> Kopia zapasowa i przywracanie w emulatorze) rozwiązało to całkowicie dla mnie.
Trochę dziwne, że nie działa po wyjęciu z pudełka przy domyślnych ustawieniach.
Twoja stara wersja instalowanej aplikacji ma zależne biblioteki / pliki JAR, które zostały zmienione. Napotkałem ten problem podczas aktualizowania innych plików jar, z których korzystała moja aplikacja.
Będziesz musiał odinstalować swoją starą wersję, a wtedy nie powinieneś mieć więcej problemów ...
Ustawienia -> Aplikacje -> Zarządzaj aplikacjami -> [Znajdź i odinstaluj swoją aplikację]
Błędy INSTALL_FAILED_DEXOPT nie powinny wystąpić. Lubić
[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.
Jeśli korzystasz z Android Studio , spróbuj wyczyścić projekt:
Kompiluj> Wyczyść projekt
Wygląda na to, że ten komunikat o błędzie może mieć wiele różnych przyczyn. Sprawa, na którą natrafiłem, była na prawdziwym urządzeniu (więc rozwiązania bazujące na emulatorze nie miały zastosowania).
Zasadniczo, gdy tak się stanie, ustaw filtr Logcat na Verbose lub Warn , co pomoże ci uzyskać więcej informacji o przyczynie.
W moim przypadku do projektu, nad którym pracowałem (duża istniejąca baza kodu), włączano wiele lub sprzecznych wersji JUnit. Aplikacja na Androida, którą próbowałem wdrożyć, miała kilka projektów bibliotek jako zależności i omyłkowo skonfigurowałem rzeczy, aby uwzględnić wiele plików jar JUnit.
Odkryłem to na podstawie serii komunikatów Logcat. Zauważ, że wiersz WARN podaje przyczynę:
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)
Wpadłem na to z Androidem Studio 3.4.1, ale używając starszego (5.0) emulatora. Ta procedura (na komputerze Mac) rozwiązała problem:
Zmieniłem rozmiar pamięci RAM i pojemność pamięci wewnętrznej emulatora Teraz TO Działa ... w menadżerze eclipse AVD
wypróbuj moją odpowiedź https://stackoverflow.com/a/34918549/3737254
Jeśli używasz Android Studio 2.0, WYŁĄCZ natychmiastowe uruchamianie.
FYI, natychmiastowe uruchamianie to nowa funkcja w Android Studio 2.0 (nigdy jej nie używałem>. <)
jak wyłączyć: preferencje -> kompilacja, wykonanie i wdrożenie -> natychmiastowe uruchomienie -> wyłączenie, a potem działa jak magia
Cieszyć się!
Musiałem wyłączyć Instant Run, aby rozwiązać problem. Aby wyłączyć natychmiastowe uruchamianie w systemie OS X, przejdź do Android Studio > Preferencje > Kompilacja, wykonanie, wdrożenie > Natychmiastowe uruchamianie, a następnie usuń zaznaczenie z Enable Instant Run to hot swap code/resource changes on deploy (default enabled)
.
dexopt error. Application failed to install
. Wypróbowałem te, zanim znalazłem to: adb kill-server
adb start-server
ponowne uruchomienie Android Studio i przywrócenie ustawień fabrycznych mojego urządzenia.
Miałem dziś ten sam problem z Android Studio na nowym urządzeniu wirtualnym. Wyglądało na to, że pobrałem x86_64
obraz, odtwarzając VD z równoważnym x86
obrazem, który go naprawił.
Spodziewałem się dostać INSTALL_FAILED_NO_MATCHING_ABIS
w tym przypadku, ale jakoś utknąłemINSTALL_FAILED_DEXOPT
x86
nie powiodła się. Po pobraniu obrazu i zmianie emulatora x86_64
na błąd zniknął. Użyłem obrazu systemu API 21.
x86_64
obrazu zamiast tego x86
. Używałem też API 21 AVD (Nexus 5).
Pracuję z Android Studio i mam ten sam błąd.
Pomogło usunięcie folderu budowania głównego modułu Modul. Po usunięciu wszystko wróć do normy.
INSTALL_FAIL_DEXOPT zwykle ma do czynienia z ograniczeniem umieszczonym w classes.dex. Na wszystkim, co sprzed ICS, dexopt zawiedzie przy czymkolwiek powyżej 5 MB. Najnowsze wersje Androida używają bufora 8 lub 16 MB.
Sprawdź rozmiar classes.dex w swoim pliku APK. Dobrze byłoby również sprawdzić, jaka jest liczba metod, ponieważ dex ma limit 65536 metod / pól.
Bibliografia:
Napotkałem ten problem po włączeniu flagi jumboMode w build ( dex.force.jumbo=true
). Wszystko działało dobrze na nowszych urządzeniach z Androidem, ale instalacja nie powiodła się na Gingerbread.
Jeśli więc Twoja aplikacja wymaga trybu jumbo ze względu na irytujące ograniczenie 65k, spróbuj wyciąć nieużywany kod / ciągi i ustawić tryb jumbo z powrotem na fałsz.
classes.dex
nie dociera do finału .apk
. Uruchamianie gradlew --offline clean && gradlew --offline assembleDebug
za każdym razem rzeczy dla mnie naprawiało. Od tego momentu możesz ponownie rozpocząć uruchamianie aplikacji z Android Studio.
EDYCJA: Przed tym, co powiedziałem powyżej, przejdź do Menedżera zadań i zabij wszystkie cmd.exe
i conhost.exe
procesy (lub tylko ten, w którym aapt
utknął). W przeciwnym razie aapt
od teraz po uruchomieniu z wiersza poleceń wystąpi niesławny błąd -1073741819
.
build.gradle
pliku projektu . Wśród zależności buildscript powinno być classpath 'com.android.tools.build:gradle:1.0.0-rc4'
.
sprawdź przestrzeń dyskową na swoim urządzeniu
Odinstalowałem aplikację i mimo to otrzymałem błąd INSTALL_FAILED_DEXOPT. Jeśli pracujesz z Androidem Studio / gradle: gradle clean załatwiło mi sprawę , na zdrowie.
Otrzymałem ten problem podczas próby instalacji na urządzeniach 2.3 (dobrze na 4.0.3). Skończyło się na tym, że projekt lib, którego używałem, miał wiele słoików, które były dla rzeczy już w Androidzie, np. Parsery HttpClient i XML itp. Patrząc na logcat
to, znalazłem to, ponieważ mówiło mi, że pomija zajęcia, ponieważ już są teraźniejszość. Niezły, nieprzydatny oryginalny błąd!
Nie ma ogólnego rozwiązania, musisz znaleźć błąd zgłoszony na swoim Logcat, aby móc go rozgryźć. Czasami jest to klasa, której nie można „dexed” z powodu użycia klasy niedostępnej na przykład w określonym docelowym interfejsie API. Lub może to być klasa, do której odwołujesz się w swoim kodzie, ale biblioteka, w której się znajduje, nie jest pakowana.
Rozważ użycie proguard, aby zmniejszyć pakiet APK. Mam ten sam problem, jeśli spróbuję zainstalować duży 25 MB + APK na starym urządzeniu Samsung Galaxy Ace 2.3.6 bez zmniejszania / optymalizacji kodu za pomocą programu Proguard.
Tryb Jumbo i ponowne uruchamianie urządzenia nie działają.
W moim przypadku był to błąd we wtyczce Kotlin w wersji 1.1.51
https://youtrack.jetbrains.com/issue/KT-20034
Ten błąd pojawił się na starych urządzeniach (API 16).
Naprawiono to, usuwając adnotacje @Parcelize i zastępując je tym generatorem kodu: https://github.com/nekocode/android-parcelable-intellij-plugin-kotlin
targetSdkVersion 22 // 17 ==========================> ustawienie tej liczby mniejszej lub równej wersji systemu operacyjnego Android na urządzeniach może pomóc
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
}
Miałem ten problem, gdy w moich nazwach metod znajdowały się znaki Unicode (ze względu na kopiowanie / wklejanie z pliku PowerPoint), które nie podobały się Dalvik. Możesz to zobaczyć, patrząc na dane wyjściowe Logcata podczas próby zainstalowania APK.
To było na prawdziwym urządzeniu.
Zmieniłem wersję 4 systemu Android dla SDK 21 i wystąpił ten błąd. Więc wróciłem do wersji wsparcia dla starej wersji (przed 21) i zadziałało. Błąd występował tylko w systemie Android 2.3
Napotkałem ten problem, gdy próbowałem zaktualizować nowe narzędzia do kompilacji 24.0.1. Połączenie internetowe zostało utracone, a narzędzia nie zostały pomyślnie pobrane, po czym otrzymałem ten błąd i spędziłem dużo czasu próbując go rozwiązać. Ale kiedy pomyślnie zaktualizowałem narzędzia do kompilacji - problem został rozwiązany. Powodzenia.