it-swarm.com.de

Wie löse ich den INSTALL_FAILED_DEXOPT-Fehler?

Ich entwickle eine Android-Anwendung unter Verwendung von 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?

123
john

Durch den Neustart des Emulators über den Android SDK and AVD Manager und die Auswahl der Option Wipe User Data wurde dieses Problem für mich gelöst.

Sie finden die Option wie im untenstehenden Bild hervorgehoben:

Wipe User Data option when starting Android emulator

70
Vikas Patidar

Ihre alte Version der App, die Sie installieren, enthält abhängige Bibliotheken/Jars, die geändert wurden. Ich habe dieses Problem beim Aktualisieren anderer JAR-Dateien festgestellt, die meine App auffrischt. 

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.

18
Lenn Dolling

Wenn Sie Android Studio verwenden, versuchen Sie, Ihr Projekt zu bereinigen:

Erstellen> Projekt reinigen

15
SandroMarques

Es scheint, dass diese Fehlermeldung viele verschiedene Ursachen haben kann. Der Fall, auf den ich gestoßen bin, befand sich auf einem echten Gerät (die Emulator-Basislösungen waren also nicht anwendbar).

Wenn dies der Fall ist, setzen Sie Ihren Logcat-Filter grundsätzlich auf Verbose oder Warn . Dadurch können Sie weitere Informationen zur Ursache erhalten.

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

Ich entdeckte dies anhand einer Reihe von Logcat-Meldungen. Beachten Sie, dass die WARN-Zeile 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)
11
wsanville

probieren 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 ein neues Feature von Android Studio 2.0 (ich habe es nie verwendet>. <)

so deaktivieren Sie: Voreinstellungen -> Erstellen, Ausführen und Bereitstellen -> Instant Run -> Deaktivieren und arbeitet dann wie Magie

Genießen!

9
yfsx

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

8
iamkaan

Ich habe die RAM size und die interne Speicherkapazität des Emulators Now IT IS Working ... im Eclipse AVD Manager geändert

8
KATJ Srinath

Stieß mit Android Studio 3.4.1 darauf, verwendete jedoch einen älteren (5.0) Emulator. Diese Prozedur (auf Mac) hat das Problem behoben:

  1. stoppen Sie den Emulator
  2. cd ~/.Android/avd/[Name des Emulators] .avd
  3. rm * .lock
  4. wischen Sie den Emulator ab
  5. emulator starten
7
Ken

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

5
Informatic0re

Dies schien für mich mit dem Festplattenspeicherplatz in Verbindung zu stehen. Ein neu gerollter 5.1-Emulator wird mit einem Fehler "zu wenig Speicherplatz" gestartet - und der Standardspeicher für den internen Speicher beträgt 800 MB.

Lösung war daher diese zu erhöhen (ich ging auf 4GB). Seltsamerweise bootet der Emulator immer noch mit der gleichen Festplattenspeicher-Warnung, die jedoch vom Hersteller zurückgesetzt wurde (Einstellungen -> Sichern und Wiederherstellen im Emulator).

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

4
HughHughTeotl

Ich hatte heute das gleiche Problem mit Android Studio auf einem neuen virtuellen Gerät. Anscheinend hatte ich das x86_64-Bild heruntergeladen und das VD mit dem entsprechenden x86-Bild neu erstellt. 

Ich erwartete in diesem Fall einen INSTALL_FAILED_NO_MATCHING_ABIS, aber irgendwie hing ich mit INSTALL_FAILED_DEXOPT fest.

4
dvkch

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

Überprüfen Sie die Größe von classes.dex in Ihrem APK. Es ist auch gut zu sehen, wie hoch Ihre Methodenzahl ist, da Dex ein Limit von 65536 Methoden/Felden 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 den Code - 65.000 Methodengrenze in dex

4
Jared Rummler

classes.dex schafft es nicht bis zum endgültigen .apk. Mit gradlew --offline clean && gradlew --offline assembleDebug wurden jedes Mal Dinge für mich behoben. Ab diesem Zeitpunkt können Sie die App erneut aus Android Studio starten.

BEARBEITEN: Vor dem oben Gesagten gehen Sie zum Task-Manager und beenden Sie alle cmd.exe- und conhost.exe-Prozesse (oder nur den, in dem aapt steckengeblieben ist). Andernfalls würde aapt von nun an abstürzen, wenn er von der Befehlszeile mit dem berüchtigten Fehler -1073741819 gestartet wurde.

3
Eugen Pechanec

Ich habe den gleichen Fehler erhalten und ihn behoben, indem ich den internen Speicher vergrößert habe.

Der interne Speicher war anfangs auf 32 MB eingestellt (ich weiß), und dann installierte ich ein paar apks, die weniger Speicherplatz hatten, als für den zu installierenden benötigt wurde.

3
binRAIN

Ich bin auf dieses Problem gestoßen, nachdem ich das Flag jumboMode im Build (dex.force.jumbo=true) aktiviert habe. Auf neueren Android-Geräten hat alles gut funktioniert, aber die Installation von Gingerbread ist fehlgeschlagen.

Wenn Ihre App aufgrund der lästigen Einschränkung von 65 KB für den Jumbo-Modus erforderlich ist, schneiden Sie nicht verwendete Codes/Zeichenfolgen aus und setzen Sie den Jumbo-Modus auf False.

3
friederbluemle

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

2
JacksOnF1re

in build.gradle kompiliert und auf die neueste Version umgestellt. und es hat für mich funktioniert.

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

Android {
    compileSdkVersion 22
    buildToolsVersion "22"
2
riseres

targetSdkVersion 22 // 17 ============================> diese Zahl kleiner oder gleich der Version des Android-Betriebssystems auf Geräten kann helfen

 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
    }
1
Thunder knight

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

1

Dieses Problem wurde bei der Installation auf 2.3-Geräten angezeigt (in 4.0.3). Es endete mit einem lib-Projekt, das ich verwendete, hatte mehrere Gläser, die bereits für Android-Inhalte waren, z. HttpClient- und XML-Parser usw. Beim Betrachten von logcat fand ich dies heraus, da es mir sagte, dass es Klassen übersprang, da sie bereits vorhanden waren. Schöner wenig hilfreicher Originalfehler!

1
Dori

Erwägen Sie die Verwendung von Proguard, um Ihre APK zu verkleinern. Ich habe das gleiche Problem, wenn ich versuche, einen großen 25MB + 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 ein Neustart des Geräts funktionieren nicht.

1
slott

In meinem Fall war dies ein Fehler in Kotlin Plugin Version 1.1.51

https://youtrack.jetbrains.com/issue/KT-20034

Dieser Fehler ist auf alten Geräten aufgetreten (API 16).

Behebung des Problems durch Entfernen der @Parcelize-Anmerkungen und Ersetzen durch diesen Code-Generator: https://github.com/nekocode/Android-parcelable-intellij-plugin-kotlin

1
stillwaiting

Ich hatte diesen Fehler auf einem echten Gerät getestet. Cache leeren/deinstallieren, alles neu starten, funktionierte für mich nicht, löschte den Inhalt des Erstellungsordners :) (Android Studio)

1
Gyroscope

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

0
Farido mastr

Ich hatte dieses Problem, als sich in meinen Methodennamen einige Unicode-Zeichen befanden (aufgrund von allem Kopieren/Einfügen aus einer PowerPoint-Datei), die Dalvik nicht mochte. Sie können dies sehen, wenn Sie sich die Logcat-Ausgabe ansehen, während Sie versuchen, das APK zu installieren.

Das war auf einem echten Gerät.

0
thoutbeckers

Klicken Sie in Android Studio auf Datei -> Caches ungültig machen/Neustart. Dies war der Trick für mich, als ich diesen Fehler erhielt, als ich diesen Fehler auf Gerät nicht Emulator erhielt.

0
Amro elaswar

Das Problem wurde behoben, indem das Datum und die Uhrzeit am Telefon korrigiert wurden (es war ein Standarddatum (01.01.1980)) und das Projekt gereinigt.

0
No Name

Dieses Problem ist aufgetreten, als ich versuchte, die neuen Build-Tools 24.0.1 zu aktualisieren. Die Internetverbindung war unterbrochen und die Tools wurden nicht erfolgreich heruntergeladen. Danach erhielt ich diesen Fehler und verbrachte viel Zeit damit, ihn zu lösen. Aber wenn ich Build-Tools erfolgreich aktualisiert habe - Problem gelöst. Viel Glück.

0

Vielleicht hilft das:

  1. Löschen Sie die Benutzerdaten, bevor Sie den Emulator starten
  2. reinigen Sie das Projekt
  3. abhängigkeiten entfernen, die nicht erforderlich sind ....
0
Rajat Sawant

Ich habe einen Grund für dieses Problem gefunden: nicht genügend Speicherplatz auf dem Handy. Also lösche ich mehrere APP vom Handy und es ist behoben.

0
Jalon Ray

Die einzige Lösung, die mir dabei geholfen hat, war, den RAM der VM auf 4 GB zu erhöhen.

0
Jim

Ich hatte meine Version von Android Version 4 für SDK 21 geändert und hatte diesen Fehler. Also habe ich die Version des Supports für die alte Version (vor 21) zurückgenommen und sie hat funktioniert. Der Fehler trat nur in Android 2.3 auf

0
Cícero Moura

Wenn Sie Eclipse bereits verwenden, können Sie Ihr Projekt bereinigen:

Projekt> Reinigen ...

0
Adamz

Für mich war es das Problem, dass auf einigen Samsung-Geräten mit Android 5.x INSTALL_FAILED_DEXOPT verursacht wurde.

Ich musste dies zu Proguard hinzufügen - nicht sicher, warum es geholfen hat. 

-keepattributes LocalVariableTable
0
Martin Rajniak

Da dies ein Problem zu sein scheint, auf das ich selbst mehrmals gestoßen bin, und diesmal hat mir keine der gemeinsam genutzten Lösungen geholfen. Ich werde trotzdem posten, was mir persönlich geholfen hat und was meiner Meinung nach in Zukunft jemand anderem helfen könnte:

Wechseln Sie in das Verzeichnis Ihres Projekts und suchen Sie die Datei build/intermediates/dex-cache/cache. Entfernen Sie es - wie der Name schon sagt, handelt es sich um eine zwischengespeicherte Dex-Datei, die veraltet sein kann, wenn Sie Änderungen an den Abhängigkeiten Ihres Projekts, der Version der Build-Tools usw. vorgenommen haben. 

0
Sosoel

Stellen Sie sicher, dass Sie alle erforderlichen SDKs installiert haben und Gradle die richtige Version als Ziel hat.

Ich hatte das gleiche Problem, aber es wurde verursacht, indem ich mein Gerät auf Android 5.0 aktualisiere und dann vergaß, alle meine Builds zu ändern, um es als Ziel festzulegen.

0
user4474925

Ich bin mit diesem Problem konfrontiert, weil die Bibliotheken, die ich verwendete, nicht übereinstimmen

Gelöst durch Aktualisieren von Android-SDK auf den neuesten Stand. Überprüfen Sie den SDK-Manager, wenn Update angezeigt wird, und führen Sie dann ein Update durch. Bereinigen Sie Ihr Projekt und führen Sie es aus. Es wird funktionieren :)  

0
Sonali8890

Starten Sie Ihr Gerät neu.

In meinem Fall lief die App auf den meisten Geräten, mit Ausnahme eines: ein Handy, das zu alt war und in letzter Zeit fehlgeschlagen war. Die App hat diesen Fehler ausgegeben, ohne die App einmal installiert zu haben. 

0
karenms

Der Fehler wird durch Löschen des Build-Ordners Ihrer Hauptanwendung behoben. Er wird erneut erstellt.

0
Prateek