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 opcjiWipe User Data
rozwiązało ten problem dla mnie.Możesz znaleźć opcję, jak zaznaczono na poniższym obrazku:
źródło
adb kill-server
następnieadb 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.
źródło
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ć
Whoo hoo.
źródło
Jeśli korzystasz z Android Studio , spróbuj wyczyścić projekt:
Kompiluj> Wyczyść projekt
źródło
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ę:
źródło
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:
źródło
Zmieniłem rozmiar pamięci RAM i pojemność pamięci wewnętrznej emulatora Teraz TO Działa ... w menadżerze eclipse AVD
źródło
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ę!
źródło
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)
.źródło
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.Jedynym rozwiązaniem, które działało, aby to naprawić, było zwiększenie pamięci RAM maszyny wirtualnej do 4 GB.
źródło
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żnymx86
obrazem, który go naprawił.Spodziewałem się dostać
INSTALL_FAILED_NO_MATCHING_ABIS
w tym przypadku, ale jakoś utknąłemINSTALL_FAILED_DEXOPT
źródło
x86
nie powiodła się. Po pobraniu obrazu i zmianie emulatorax86_64
na błąd zniknął. Użyłem obrazu systemu API 21.x86_64
obrazu zamiast tegox86
. 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.
źródło
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:
Błąd podczas instalowania aplikacji (INSTALL_FAILED_DEXOPT)
https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920
Jak zmniejszyć kod - limit metod 65k w dex
źródło
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.
źródło
classes.dex
nie dociera do finału.apk
. Uruchamianiegradlew --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
iconhost.exe
procesy (lub tylko ten, w którymaapt
utknął). W przeciwnym razieaapt
od teraz po uruchomieniu z wiersza poleceń wystąpi niesławny błąd-1073741819
.źródło
build.gradle
pliku projektu . Wśród zależności buildscript powinno byćclasspath 'com.android.tools.build:gradle:1.0.0-rc4'
.Otrzymałem ten sam błąd i naprawiłem go, zwiększając rozmiar pamięci wewnętrznej.
Pamięć wewnętrzna była początkowo ustawiona na 32 MB (wiem), a następnie zainstalowałem na niej kilka apek, które pozostawiły mniej miejsca niż to, co było potrzebne do zainstalowania.
źródło
sprawdź przestrzeń dyskową na swoim urządzeniu
źródło
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.
źródło
w build.gradle zmień kompilację i skompiluj do najnowszej wersji. i to zadziałało dla mnie.
================
źródło
dużo odpowiedzi tutaj, ale może to pomoże komuś, że miałem ten problem z prawdziwym urządzeniem, a problem był z D8
spróbuj dodać to do swojego gradle.properties i to działa dla mnie
źródło
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!źródło
Testowałem ten błąd na prawdziwym urządzeniu. Wyczyszczenie pamięci podręcznej / odinstalowanie, ponowne uruchomienie wszystkiego nie zadziałało, usunięcie zawartości folderu kompilacji zadziałało :) (Android studio)
źródło
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.
źródło
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ą.
źródło
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
źródło
targetSdkVersion 22 // 17 ==========================> ustawienie tej liczby mniejszej lub równej wersji systemu operacyjnego Android na urządzeniach może pomóc
źródło
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.
źródło
Rozwiązany przez poprawienie daty i godziny w telefonie (była to jakaś domyślna data 01.01.1980) i wyczyszczenie projektu.
źródło
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
źródło
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.
źródło