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?
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?
Antworten:
Das Neustarten des Emulators von
Android SDK and AVD Manager
und das Auswählen der OptionWipe User Data
hat dieses Problem für mich gelöst.Sie finden die Option wie im folgenden Bild hervorgehoben:
quelle
adb kill-server
dannadb start-server
sollte Ihr Problem lösen. Möglicherweise ist eine ältere App vorhanden, dann deinstallieren Sie sie zuerst.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.
quelle
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
Whoo hoo.
quelle
Wenn Sie Android Studio verwenden , bereinigen Sie Ihr Projekt:
Erstellen> Projekt bereinigen
quelle
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:
quelle
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:
quelle
Ich habe die RAM-Größe und die interne Speicherkapazität des Emulators geändert. Jetzt funktioniert es ... im Eclipse AVD Manager
quelle
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!
quelle
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)
.quelle
dexopt error. Application failed to install
. Ich habe diese ausprobiert, bevor ichadb kill-server
adb start-server
Folgendes gefunden habe: Neustart von Android Studio und Zurücksetzen meines Geräts auf die Werkseinstellungen.Die einzige Lösung, mit der ich das Problem beheben konnte, war die Erhöhung des RAM der VM auf 4 GB.
quelle
Ich hatte heute das gleiche Problem mit Android Studio auf einem neuen virtuellen Gerät. Es schien, als hätte ich das
x86_64
Bild heruntergeladen und den VD mit dem entsprechendenx86
Bild neu erstellt.Ich hatte erwartet,
INSTALL_FAILED_NO_MATCHING_ABIS
in diesem Fall eine zu bekommen, aber irgendwie war ich festgefahrenINSTALL_FAILED_DEXOPT
quelle
x86
fehlgeschlagen. Nach dem Herunterladen des Bildes und dem Ändern des Emulators aufx86_64
den Fehler war verschwunden. Ich habe das API 21-Systemabbild verwendet.x86_64
Bild anstelle desx86
einen zu verwenden. Ich habe auch eine API 21 AVD (Nexus 5) verwendet.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.
quelle
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
quelle
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.
quelle
classes.dex
schafft es nicht ins Finale.apk
. Laufengradlew --offline clean && gradlew --offline assembleDebug
feste 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.exe
undconhost.exe
Prozesse (oder nur den, in dem ichaapt
stecken geblieben bin ). Andernfallsaapt
würde es von nun an abstürzen, wenn es über die Befehlszeile mit dem berüchtigten Fehler gestartet wird-1073741819
.quelle
build.gradle
. Unter Buildscript-Abhängigkeiten sollte es gebenclasspath 'com.android.tools.build:gradle:1.0.0-rc4'
.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.
quelle
Überprüfen Sie den Speicherplatz auf Ihrem Gerät
quelle
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.
quelle
in build.gradle ändern kompiliert und auf die neueste Version bauen. und es hat bei mir funktioniert.
================
quelle
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
quelle
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
logcat
fü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!quelle
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)
quelle
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.
quelle
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.
quelle
In meinem Fall war dies ein Fehler im Kotlin-Plugin, Version 1.1.51
https://youtrack.jetbrains.com/issue/KT-20034
Dieser Fehler trat auf alten Geräten (API 16) auf.
Dies wurde behoben, indem @Parcelize-Anmerkungen entfernt und durch diesen Codegenerator ersetzt wurden: https://github.com/nekocode/android-parcelable-intellij-plugin-kotlin
quelle
targetSdkVersion 22 // 17 ==========================> Stellen Sie diese Zahl möglicherweise kleiner oder gleich der Version des Android-Betriebssystems auf Geräten ein
quelle
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.
quelle
Behebung durch Korrigieren der Datums- und Uhrzeit am Telefon (es war ein Standarddatum 01.01.1980) und Bereinigen des Projekts.
quelle
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
quelle
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.
quelle