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 Option Wipe User Data
hat dieses Problem für mich gelöst.
Sie finden die Option wie im folgenden Bild hervorgehoben:
adb kill-server
dann adb 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.
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.
Wenn Sie Android Studio verwenden , bereinigen Sie Ihr Projekt:
Erstellen> Projekt bereinigen
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)
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:
Ich habe die RAM-Größe und die interne Speicherkapazität des Emulators geändert. Jetzt funktioniert es ... im Eclipse AVD Manager
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!
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)
.
dexopt error. Application failed to install
. Ich habe diese ausprobiert, bevor ich adb kill-server
adb start-server
Folgendes gefunden habe: Neustart von Android Studio und Zurücksetzen meines Geräts auf die Werkseinstellungen.
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 entsprechenden x86
Bild neu erstellt.
Ich hatte erwartet, INSTALL_FAILED_NO_MATCHING_ABIS
in diesem Fall eine zu bekommen, aber irgendwie war ich festgefahrenINSTALL_FAILED_DEXOPT
x86
fehlgeschlagen. Nach dem Herunterladen des Bildes und dem Ändern des Emulators auf x86_64
den Fehler war verschwunden. Ich habe das API 21-Systemabbild verwendet.
x86_64
Bild anstelle des x86
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.
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)
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.
classes.dex
schafft es nicht ins Finale .apk
. Laufen gradlew --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
und conhost.exe
Prozesse (oder nur den, in dem ich aapt
stecken geblieben bin ). Andernfalls aapt
würde es von nun an abstürzen, wenn es über die Befehlszeile mit dem berüchtigten Fehler gestartet wird -1073741819
.
build.gradle
. Unter Buildscript-Abhängigkeiten sollte es geben classpath '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.
Überprüfen Sie den Speicherplatz auf Ihrem Gerät
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.
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
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!
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.
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.
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
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
}
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.
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
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.