Wie löse ich den Fehler INSTALL_FAILED_DEXOPT?

180

Ich entwickle eine Android-Anwendung mit Android 2.2, meine APK-Größe beträgt 22,5 MB und ich möchte einen neuen Build für ein Samsung-Tablet erstellen. Ich habe folgenden Fehler erhalten:

INSTALL_FAILED_DEXOPT

Wie löse ich diese Art von Fehler?

John
quelle
Konnten Sie diese Anwendung erfolgreich auf anderen Geräten als dem Samsung-Tablet installieren?
Will Tate
1
Sie müssen die Logcat-Ausgabe einfügen, die generiert wird, wenn die Installation fehlschlägt.
Fadden
Ich hatte das gleiche Problem auf einem Gerät, auf dem ich getestet habe (HTC Droid Eris). Ich hatte eine zuvor installierte Version meiner App auf dem Telefon, ich habe sie nur deinstalliert und neu installiert und es war in Ordnung.
Ninjasense
Das Deinstallieren und Neuinstallieren der App funktioniert immer. Das Löschen von Benutzerdaten oder das Neuerstellen der AVD erfolgt zeitaufwändig. Die Frage ist, gibt es eine bessere und schnellere Option?
Bschandramohan
7
@ChandraMohan das ist NICHT wahr. Hör auf zu versuchen, es wahr zu machen. Ich habe mein Gerät formatiert und versucht, die App neu zu installieren. Es wirft immer noch diesen Fehler!
Artiom Chilaru

Antworten:

99

Das Neustarten des Emulators von Android SDK and AVD Managerund das Auswählen der Option Wipe User Datahat dieses Problem für mich gelöst.

Sie finden die Option wie im folgenden Bild hervorgehoben:

Löschen Sie die Option Benutzerdaten, wenn Sie den Android-Emulator starten

Vikas Patidar
quelle
17
Was ist, wenn es mein Telefon ist und kein Emulator?
Mtmurdock
1
@mtmurdock versuchen adb kill-serverdann adb start-serversollte Ihr Problem lösen. Möglicherweise ist eine ältere App vorhanden, dann deinstallieren Sie sie zuerst.
Vikas Patidar
@mtmurdock Sie haben es wahrscheinlich versucht, aber ein Neustart des Telefons hat bei mir funktioniert :)
Dunc
Server beenden und dann starten hat bei mir nicht funktioniert, Emulator neu starten und Wiping Data funktioniert bei mir eigentlich.
Shuvo
73

Dies schien für mich mit dem Speicherplatz zu zusammenhängen. Ein neu gewürfelter 5.1-Emulator wird mit dem Fehler "wenig Speicherplatz" gestartet. Bei Betrachtung der Emulatoreigenschaften beträgt der für den internen Speicher zugewiesene Standardspeicherplatz 800 MB, was als gering erscheint.

Die Lösung bestand daher darin, dies zu erhöhen (ich ging zu 4 GB). Seltsamerweise startet der Emulator immer noch mit der gleichen Speicherplatzwarnung, aber das Zurücksetzen auf die Werkseinstellungen (Einstellungen -> Sichern und Wiederherstellen im Emulator) hat das Problem für mich vollständig gelöst.

Nur ein bisschen seltsam, dass es mit Standardeinstellungen nicht sofort funktioniert.

HughHughTeotl
quelle
2
In der Tat hat das Problem, das ich hatte und das Zurücksetzen über die Telefoneinstellungen, es für mich behoben. Vielen Dank!
Justin Stanley
1
Versuchte fast alles, aber nichts funktionierte außer diesem, danke
shehzy
1
Nach 2 Stunden fand ich diesen Kommentar - danke, dass du meinen Tag gerettet hast, hat funktioniert!
Kilian Eller
1
Dies verursachte auch INSTALL_FAILED_DEXOPT auf meinem Emulator. Ich hatte die Größe erhöht, musste aber zu den Einstellungen gehen und eine Werkswiederherstellung ausführen. Das Problem wurde behoben.
Dave Thomas
Gott ... wieder ist mir das passiert, nachdem ich mein Mac OS aktualisiert habe. Verdoppeln Sie meine Erstattung dieser Lösung, gehen Sie zu -> Einstellungen und führen Sie die Werkswiederherstellung aus. Ich musste diese Frage nachschlagen, um mich daran zu erinnern, wie ich sie behoben habe ... Gott sei Dank für die Geschichte des Stapelüberlaufs, und ich konnte meinen Kommentar finden
Dave Thomas
17

Ihre alte Version der App, die Sie installieren, enthält abhängige Bibliotheken / Jars, die geändert wurden. Ich bin auf dieses Problem gestoßen, als ich andere JAR-Dateien aktualisiert habe, die meine App aktualisiert hat.

Sie müssen Ihre alte Version deinstallieren und dann sollten Sie keine Probleme mehr haben ...

Einstellungen -> Anwendungen -> Anwendungen verwalten -> [App suchen und deinstallieren]

INSTALL_FAILED_DEXOPT-Fehler sollten nicht ausbrechen. Mögen

[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.

Lenn Dolling
quelle
Ich kann der Ursache und Wirkung zustimmen. Die gleiche Situation passierte in meinem Fall, nachdem ich an Gläsern herumgebastelt hatte. Für mich war dies nur auf Android 2.3 Gingerbread-basierten Geräten, ICS & Lollipop waren in Ordnung.
AlexVPerl
Wird dies beim Hochladen in den Play Store ein Problem sein? oder löscht das Installationsprogramm die App und installiert sie neu?
Eduardo Naveda
14

Wenn Sie Android Studio verwenden , bereinigen Sie Ihr Projekt:

Erstellen> Projekt bereinigen

SandroMarques
quelle
12

Es scheint, dass diese Fehlermeldung viele verschiedene Ursachen haben kann. Der Fall, auf den ich stieß, war auf einem realen Gerät (daher galten die Emulator-Basislösungen nicht).

Stellen Sie in diesem Fall Ihren Logcat-Filter grundsätzlich auf Ausführlich oder Warnen ein , um weitere Informationen zur Ursache zu erhalten.

In meinem Fall wurden mehrere oder widersprüchliche Versionen von JUnit in das Projekt aufgenommen, an dem ich arbeitete (eine große vorhandene Codebasis). Die Android-App, die ich bereitstellen wollte, hatte mehrere Bibliotheksprojekte als Abhängigkeiten, und ich hatte fälschlicherweise mehrere JUnit-JAR-Dateien eingerichtet.

Ich habe dies anhand einer Reihe von Logcat-Nachrichten entdeckt. Beachten Sie, dass die Zeile WARN die Ursache angibt:

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)
wsanville
quelle
3
Dies ist ein guter Vorschlag. Ich bin damit einverstanden, dass Sie die LogCat-Ausgabe anzeigen, um die tatsächliche Fehlermeldung anzuzeigen. Ich habe diesen Fehler erhalten, weil mein Gerät nur noch wenig Speicherplatz hat und die APK nicht entpackt werden konnte. Ich glaube, es gibt mehrere Gründe, warum dieser Fehler ausgelöst werden kann und das Deinstallieren oder Löschen von Benutzerdaten möglicherweise nicht erforderlich ist. Ich habe denselben Vorschlag als Antwort auf eine ähnliche (doppelte) Frage veröffentlicht.
Bryan Bedard
2
ENTSCHULDIGUNG, DAS IST DER GLEICHE PUNKT, DEN Bryan Bedard gemacht hat. Ich hatte nicht genügend Speicherplatz - normalerweise wird ein Fehler wie "nicht genügend Speicherplatz" angezeigt, aber aus irgendeinem Grund wurde dieser DEXOPT-Fehler angezeigt. Logcat zeigte einen Fehler Zip inflate: Schreiben fehlgeschlagen: Kein Speicherplatz mehr auf dem Gerät.
Mobibob
12

Ist mit Android Studio 3.4.1 darauf gestoßen, hat aber einen älteren (5.0) Emulator verwendet. Dieses Verfahren (auf dem Mac) hat das Problem behoben:

  1. Emulator stoppen
  2. cd ~ / .android / avd / [Emulatorname] .avd
  3. rm * .lock
  4. Emulator löschen
  5. Emulator starten
Ken
quelle
3
Das, was oben erwähnt wurde, nachdem der interne Speicher des Emulators auf 4 GB erhöht wurde, ist das einzige, was für mich funktioniert hat.
Dell116
@ dell116 Ich bin nicht überrascht, dass manchmal mehr als eine Sache getan werden muss, nur basierend auf all den unterschiedlichen Antworten auf diese Frage!
Ken
3
Einverstanden! Und herzlichen Glückwunsch zu dem Benutzernamen "Ken".
Dell116
Leider hat mir keine der Kombinationen von Wischen / Erhöhen des Speichers / Wischens wieder geholfen. Ich gab auf.
Kann Poyrazoğlu
1
@ CanPoyrazoğlu - Ich hätte auch fast aufgegeben. Ich denke, die Emulatoren müssen äußerst sensibel sein und viele Dinge können zum Scheitern führen (wie die unterschiedlichen Antworten auf eine vor mehr als acht Jahren gestellte Frage hier belegen). Das Entfernen der .lock-Dateien war in meinem Fall der Schlüssel, aber ich kann sicher sehen, wo dies möglicherweise nicht alle Probleme löst.
Ken
10

Ich habe die RAM-Größe und die interne Speicherkapazität des Emulators geändert. Jetzt funktioniert es ... im Eclipse AVD Manager

KATJ Srinath
quelle
2
Dies löst auch das Problem in Android Studio. Ich hatte nur 200 MB internen Speicher. Steigen Sie auf 1 GB und das Problem ist gelöst. Der gleiche Nachrichtenfehler ... Danke !!
Joan Casadellà
Funktioniert auch für mich. Erhöhen Sie von 200 MB!
JohnyTex
10

Versuchen Sie meine Antwort https://stackoverflow.com/a/34918549/3737254

Wenn Sie Android Studio 2.0 verwenden, deaktivieren Sie den Sofortlauf.

Zu Ihrer Information, Instant Run ist eine neue Funktion von Android Studio 2.0 (ich habe sie nie verwendet>. <)

So deaktivieren Sie: Einstellungen -> Erstellen, Ausführen und Bereitstellen -> Sofortiger Ausführen -> Deaktivieren, dann funktioniert es wie von Zauberhand

Genießen!

yfsx
quelle
Dies war mein Problem beim Testen alter APIs auf einem Emulator. Nach dem Ändern und einem sauberen Abwischen des Emulators hat es funktioniert!
Ben
8

Ich musste Instant Run deaktivieren, um das Problem zu beheben. Um die sofortige Ausführung unter OS X zu deaktivieren, gehen Sie zu Android Studio > Einstellungen > Erstellen, Ausführen, Bereitstellung > Sofortige Ausführung und entfernen Sie das Häkchen von Enable Instant Run to hot swap code/resource changes on deploy (default enabled).

iamkaan
quelle
Das hat bei mir funktioniert dexopt error. Application failed to install. Ich habe diese ausprobiert, bevor ich adb kill-server adb start-serverFolgendes gefunden habe: Neustart von Android Studio und Zurücksetzen meines Geräts auf die Werkseinstellungen.
Sherlock
7

Die einzige Lösung, mit der ich das Problem beheben konnte, war die Erhöhung des RAM der VM auf 4 GB.

Jim
quelle
6

Ich hatte heute das gleiche Problem mit Android Studio auf einem neuen virtuellen Gerät. Es schien, als hätte ich das x86_64Bild heruntergeladen und den VD mit dem entsprechenden x86Bild neu erstellt.

Ich hatte erwartet, INSTALL_FAILED_NO_MATCHING_ABISin diesem Fall eine zu bekommen, aber irgendwie war ich festgefahrenINSTALL_FAILED_DEXOPT

dvkch
quelle
1
Für mich war es das Gegenteil. Der Versuch, auf zu installieren, ist x86fehlgeschlagen. Nach dem Herunterladen des Bildes und dem Ändern des Emulators auf x86_64den Fehler war verschwunden. Ich habe das API 21-Systemabbild verwendet.
Friederbluemle
Das Gegenteil hat auch bei mir funktioniert. Versuchte alles in diesem Thread, bevor ich versuchte, das x86_64Bild anstelle des x86einen zu verwenden. Ich habe auch eine API 21 AVD (Nexus 5) verwendet.
Renan Ferrari
5

Ich arbeite mit Android Studio und hatte den gleichen Fehler.

Das Löschen des Build-Ordners des Hauptmoduls hat geholfen. Nach dem Löschen wird alles wieder normal.

Informatic0re
quelle
4

INSTALL_FAIL_DEXOPT hat normalerweise mit dem Limit für classes.dex zu tun. Bei allen Vor-ICS-Problemen schlägt dexopt bei mehr als 5 MB fehl. Neuere Versionen von Android verwenden einen 8- oder 16-MB-Puffer.

Überprüfen Sie die Größe von classes.dex in Ihrer APK. Es wäre auch gut zu sehen, wie viele Methoden Sie verwenden, da dex ein Methoden- / Feldlimit von 65536 hat.


Verweise:

Fehler beim Installieren der Anwendung (INSTALL_FAILED_DEXOPT)

https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920

So verkleinern Sie Code - 65k Methodenlimit in Dex

Jared Rummler
quelle
3

Ich bin auf dieses Problem gestoßen, nachdem ich das jumboMode- Flag in build ( dex.force.jumbo=true) aktiviert habe . Auf neueren Android-Geräten funktionierte alles einwandfrei, aber die Installation auf Gingerbread schlug fehl.

Wenn Ihre App aufgrund der lästigen 65k-Einschränkung den Jumbo-Modus benötigt, versuchen Sie, nicht verwendeten Code / Strings zu entfernen und den Jumbo-Modus wieder auf false zu setzen.

friederbluemle
quelle
Ich habe auch gerade den Jumbo-Modus aktiviert und dies beim Testen auf alten Geräten festgestellt. Leider hat das Zurücksetzen auf false das Problem für mich nicht gelöst. Die APK wurde mit Proguard verkleinert.
Slott
Wir haben das gleiche Problem festgestellt, Jumbo Mode funktioniert nicht mit API 10
Henrique de Sousa
3

classes.dexschafft es nicht ins Finale .apk. Laufen gradlew --offline clean && gradlew --offline assembleDebugfeste Dinge für mich jedes Mal. Ab diesem Zeitpunkt können Sie die App erneut von Android Studio aus starten.

BEARBEITEN: Vor dem, was ich oben gesagt habe, gehe zum Task-Manager und töte alle cmd.exeund conhost.exeProzesse (oder nur den, in dem ich aaptstecken geblieben bin ). Andernfalls aaptwürde es von nun an abstürzen, wenn es über die Befehlszeile mit dem berüchtigten Fehler gestartet wird -1073741819.

Eugen Pechanec
quelle
Geschätzt: D erwähnenswert, dass die neuesten Build-Tools (2.1.1) und das Gradle-Plugin (1.0.0-rc1) wie ein Zauber wirken
Eugen Pechanec
Nun, das weiß ich nicht, ich habe gerade Android Studio 1.0 installiert und musste dies tun, damit es funktioniert.
Axnsan
Versuchen Sie auch, alle java.exe zu töten. Wie viel RAM hast du? Stellen Sie unbedingt sicher, dass Sie die neueste Version von Folgendem haben: Android Studio 1.0.0-rc4, Gradle-Android-Plugin 1.0.0-rc1, Build-Tools 21.1.1. Ich habe den Fehler seit einiger Zeit nicht mehr gesehen.
Eugen Pechanec
Build-Tools sind 21.1.1, Android Studio ist 1.0 und ich weiß nicht, wie ich die Gradle-Plugin-Version finden kann. Ich habe gerade die Version 1.0 heruntergeladen, die gestern auf der Android-Entwickler-Website veröffentlicht wurde ...
Axnsan
Suchen Sie in Ihrer Stammprojektdatei build.gradle. Unter Buildscript-Abhängigkeiten sollte es geben classpath 'com.android.tools.build:gradle:1.0.0-rc4'.
Eugen Pechanec
3

Ich habe den gleichen Fehler erhalten und ihn durch Erhöhen des internen Speichers behoben.

Der interne Speicher war ursprünglich auf 32 MB eingestellt (ich weiß), und dann habe ich ein paar Apks darauf installiert, die weniger Speicherplatz als für die Installation erforderlich waren.

binRAIN
quelle
3

Überprüfen Sie den Speicherplatz auf Ihrem Gerät

Farido mastr
quelle
2
Dies hilft, ich habe den RAM und Speicherplatz meines virtuellen Geräts vergrößert und dann das Problem gelöst.
Wesely
2

Ich hatte die App deinstalliert und trotzdem den Fehler INSTALL_FAILED_DEXOPT erhalten. Wenn Sie mit Android Studio / gradle arbeiten: gradle clean hat den Trick für mich getan, Prost.

JacksOnF1re
quelle
Ich musste gradlew verwenden, aber hey es hat funktioniert! danke (auch das Paket in Daten / Daten entfernt)
Maxim Geerinck
2

in build.gradle ändern kompiliert und auf die neueste Version bauen. und es hat bei mir funktioniert.

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

android {
    compileSdkVersion 22
    buildToolsVersion "22"
Riseres
quelle
2

Viele Antworten hier, aber vielleicht kann es jemandem helfen, bei dem ich dieses Problem mit einem echten Gerät hatte und das Problem mit D8 war

versuche dies zu deinen gradle.properties hinzuzufügen und es funktioniert für mich

android.enableD8=false
android.enableD8.desugaring= false
NataTse
quelle
1

Ich habe dieses Problem beim Versuch, auf 2.3-Geräten zu installieren (in Ordnung auf 4.0.3). Es endete damit, dass ein lib-Projekt, das ich benutzte, mehrere Jars hatte, die für Dinge waren, die bereits in Android waren, z. B. HttpClient- und XML-Parser usw. Das Anschauen logcatführte mich dazu, dies zu finden, da es mir sagte, dass es Klassen übersprang, weil sie bereits vorhanden waren Geschenk. Schöner nicht hilfreicher Originalfehler da!

Dori
quelle
2
Ich habe das gleiche Problem. Können Sie erklären, wie Sie dieses Problem behoben haben? Ich habe Bibliotheken mit einer Größe von mehr als 7 MB, daher kann ich sie nicht auf einem früheren Gerät wie 2.3 installieren.
Rakkis
In meinem Fall habe ich gradle build verwendet, um apk zu erstellen, und der Schuldige war das Hüpfburg-Versorgerglas. Ich musste das Modul 'bcprov-jdk' in den Kompilierungsabhängigkeiten des Root-Projekts ausschließen.
Pawan
1

Ich hatte diesen Fehlertest auf einem realen Gerät. Das Löschen des Caches / Deinstallieren, Neustarten von allem hat bei mir nicht funktioniert, das Löschen des Inhalts des Build-Ordners hat funktioniert :) (Android Studio)

Gyroskop
quelle
1

Es gibt keine generische Lösung. Sie müssen den auf Ihrem Logcat gemeldeten Fehler finden, um ihn herauszufinden. Manchmal ist es eine Klasse, die aufgrund der Verwendung einer Klasse, die beispielsweise in der angegebenen Ziel-API nicht verfügbar ist, nicht "dexiert" werden kann. Oder es könnte eine Klasse sein, auf die Sie in Ihrem Code verweisen, aber die Bibliothek, in der sie sich befindet, wird nicht gepackt.

Alécio Carvalho
quelle
1

Erwägen Sie die Verwendung von Proguard, um Ihre APK zu verkleinern. Ich habe das gleiche Problem, wenn ich versuche, ein großes 25 MB + APK auf einem alten Samsung Galaxy Ace 2.3.6-Gerät zu installieren, ohne den Code mit Proguard zu verkleinern / zu optimieren.

Der Jumbo-Modus und der Neustart des Geräts funktionieren nicht.

Slott
quelle
1

targetSdkVersion 22 // 17 ==========================> Stellen Sie diese Zahl möglicherweise kleiner oder gleich der Version des Android-Betriebssystems auf Geräten ein

 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
    }
Donnerritter
quelle
0

Ich hatte dieses Problem, als meine Methodennamen einige Unicode-Zeichen enthielten (ausgerechnet aufgrund des Kopierens / Einfügens aus einer Powerpoint-Datei), die Dalvik nicht gefiel. Sie können dies sehen, indem Sie sich die Logcat-Ausgabe ansehen, während Sie versuchen, das APK zu installieren.

Dies war auf einem echten Gerät.

thoutbeckers
quelle
0

Behebung durch Korrigieren der Datums- und Uhrzeit am Telefon (es war ein Standarddatum 01.01.1980) und Bereinigen des Projekts.

Kein Name
quelle
0

Ich hatte meine Version der Android Version 4 Unterstützung für SDK 21 geändert und hatte diesen Fehler. Also habe ich die Version der Unterstützung für die alte Version (vor 21) zurückgegangen und es hat funktioniert. Der Fehler trat nur in Android 2.3 auf

Cícero Moura
quelle
0

Ich bin auf dieses Problem gestoßen, als ich versucht habe, neue Build-Tools 24.0.1 zu aktualisieren. Die Internetverbindung wurde unterbrochen und die Tools wurden nicht erfolgreich heruntergeladen. Danach habe ich diesen Fehler erhalten und viel Zeit damit verbracht, ihn zu beheben. Aber als ich die Build-Tools erfolgreich aktualisiert habe, ist das Problem gelöst. Viel Glück.

Alex Perevozchykov
quelle