Ich erhalte diesen Fehler beim Ausführen meiner Android-App (ich habe sie bereinigt und dann erstellt, aber der Fehler ist immer noch vorhanden)
- Synchronisieren: OK
- Projekt erstellen: OK
- Sauber: OK
- Ausführen: Fehler
Fehler: Ausführung für Task ': app: dexDebug' .com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Prozess 'Befehl' C: \ Programme \ Java \ jdk1.7.0 _25 \ bin \ java.exe '' beendet mit einem Exit-Wert ungleich Null 2
Meine Gradle-Datei:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.rzr.rzevallosr.miappdepruebas"
minSdkVersion 19
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// This library handles authentication and authorization
compile 'com.spotify.sdk:spotify-auth:1.0.0-beta9@aar'
// This library handles music playback
compile 'com.spotify.sdk:spotify-player:1.0.0-beta9@aar'
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.+'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile files('libs/spotify-web-api-android-master-0.1.0.jar')
compile files('libs/okio-1.3.0.jar')
}
BEARBEITEN: Ich habe nicht gesehen, dass "compile fileTree (dir: 'libs', include: ['* .jar'])" zweimal meine Bibliotheken kompiliert hat, also kommentiere ich nur:
//compile 'com.squareup.retrofit:retrofit:1.9.0'
//compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
//compile 'com.squareup.okhttp:okhttp:2.2.0'
//compile files('libs/spotify-web-api-android-master-0.1.0.jar')
//compile files('libs/okio-1.3.0.jar')
und es funktioniert gut.
android
asp.net-web-api
gradle
build.gradle
Maverick.pe
quelle
quelle
Antworten:
Dieses Problem ist möglicherweise darauf zurückzuführen, dass das von Android festgelegte Dex-Limit für 65K-Methoden überschritten wurde. Dieses Problem kann nicht gelöst werden , indem das Projekt Reinigung und einige nicht genutzte Bibliotheken und Methoden von Abhängigkeiten in build.gradle entfernen, OR durch multidex Unterstützung hinzufügen.
Wenn Sie also Bibliotheken und Methoden behalten müssen, können Sie die Multi-Dex-Unterstützung aktivieren, indem Sie sie in der Gradle-Konfiguration deklarieren.
Weitere Informationen zur Multidex-Unterstützung und zur Entwicklung von Apps mit mehr als 65.000 Methoden finden Sie hier .
quelle
./gradlew assembleDebug --stacktrace --debug
. Ich habe diesen Fehler in meinem Fall gesehencom.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
Für mich war das Problem, dass ich einen unnötigen Complie-Bibliothekscode in build.gradle eingefügt hatte
Das verursachte über 65.000 Methoden, also entfernte es, synchronisierte die Synchronisierung, bereinigte das Projekt und lief dann erneut und dann hörte dieser Fehler auf. Ich brauchte nur Karten und gcm, also habe ich diese Zeilen eingefügt und das Projekt synchronisiert
Hallo Leute, ich bin wieder auf dieses Problem gestoßen und dieses Mal war es wegen der Änderung der Version der Build-Tools und ich musste wirklich Multidex aktivieren. Also habe ich die build.gradle-Datei meiner App hinzugefügt.
Erstellen Sie eine Klasse, die die Anwendungsklasse erweitert, und fügen Sie diese Methode in die Klasse ein.
auch in der OnCreate-Methode enthalten
quelle
Nur für den Fall, dass jemand immer noch damit zu kämpfen hat und keine Ahnung hat, warum dies geschieht und wie es behoben werden kann. In der Tat dieser Fehler
Es kann viele Gründe geben, aber sicherlich nichts, was mit Ihrer JDK-Version zu tun hat. Verschwenden Sie also nicht Ihre Zeit in die falsche Richtung. Dies sind zwei Hauptgründe dafür
Der erste Fall kann wie folgt behoben werden: Finden Sie heraus, welche Abhängigkeiten Sie mehrfach aufgenommen haben. Führen Sie dazu den folgenden Befehl im Android Studio Terminal aus
Dies gibt alle Abhängigkeiten zurück, aber JAR-Dateien, die Sie aus dem lib-Ordner einschließen, versuchen, mit einem Sternchen (*) gekennzeichnete Duplikate zu entfernen. Dies ist nicht immer möglich, aber in einigen Fällen können Sie dies trotzdem tun, nachdem Sie versucht haben, Module auszuschließen, die sind viele Male enthalten, können Sie es so machen
Für den zweiten Fall, wenn Sie den Vorschlag für ein Methodenlimit überschreiten, sollten Sie versuchen, ihn zu minimieren, indem Sie die enthaltenen Bibliotheken entfernen (Anmerkung klingt wie die erste Lösung), wenn dies nicht möglich ist. Fügen Sie Ihrer defaultConfig multiDexEnabled true hinzu
Dies erhöht die Methodenbeschränkung, ist jedoch aufgrund möglicher Leistungsprobleme nicht das Beste. WICHTIG Das Hinzufügen nur
multiDexEnabled true
zudefaultConfig
ist in der Tat nicht ausreichend auf allen Geräten, auf denen Android <5 Lollipop ausgeführt wird. Dies führt zu unerwartetem Verhalten undNoClassDefFoundError
. Wie man es löst, wird hier beschriebenquelle
Ich wusste (bis dahin) nicht, dass "compile fileTree (dir: 'libs', include: ['* .jar'])" alles kompiliert, was die jar-Erweiterung im libs-Ordner hat, also kommentiere (oder lösche) ich dies einfach Linien:
und es funktioniert gut. Danke trotzdem! Mein Fehler.
quelle
compile fileTree(dir: 'libs', include: ['*.jar'])
in Gradle. Es hat mir geholfen.compile fileTree(dir: 'libs', include: ['*.jar'])
aber es wird immer noch der gleiche Fehler angezeigt.Ich hatte das gleiche Problem und habe das Entfernen der Bibliothek behoben, die nicht notwendig waren
Ich habe diese Bibliothek entfernt und konnte das Projekt problemlos ausführen.
quelle
Meins wurde gelöst, indem multiDex für Debug-Builds aktiviert wurde.
quelle
Ich lehne eingebettetes JDK (in 32 Bit) ab, da eingebettetes JDK 64 Bit ist
Rechtsklicken Sie Ihr Projekt -> Modul öffnen Einstellung -> SDK Location -> Deaktivieren Sie die Option Embedded JDK dann stellen Sie Ihre JDK - Pfad, zum Beispiel in Ubuntu / usr / lib / jvm / java-8-openjdk-i386
quelle
echo $JAVA_HOME
für den WegMögliches Problem: Sie haben das Limit für Dex 65k-Methoden überschritten. Haben Sie möglicherweise eine Bibliothek oder mehrere Methoden hinzugefügt, bevor das Problem aufgetreten ist?
quelle
Wenn Sie Ihr SDK bereits aktualisiert haben und auch Google-Play-Dienste verwenden, müssen Sie sich um die Abhängigkeit kümmern, da es einige Konflikte gibt mit:
Befolgen Sie die nachstehenden Anweisungen: Kompilieren Sie 'com.google.android.gms: Wiedergabedienste: +' Durch Kompilieren ersetzen 'com.google.android.gms: Wiedergabedienste: 6.5.87'
Hinweis: Hier ist '6.5.87' die Google-Play-Service-Version. Ich hoffe es wird helfen ..
quelle
Ich habe android-support-v4.jar aus dem libs-Ordner entfernt und es funktioniert !!!
Wenn Ihr Projekt einen Fehler enthält, überprüfen Sie Ihre build.gradle-Datei
quelle
In meinem Fall bestand das Problem darin, dass die neue Bibliothek (Gradle-Abhängigkeit), die ich hinzugefügt hatte, auf einigen anderen Abhängigkeiten beruhte und zwei dieser zugrunde liegenden Abhängigkeiten mit einigen Abhängigkeiten anderer Bibliotheken / Abhängigkeiten in meinem Build-Skript in Konflikt standen / kollidierten. Insbesondere habe ich Apache Commons hinzugefügt
Validator
(zur E-Mail-Validierung), und zwei seiner Abhängigkeiten (Apache CommonsLogging
und Apache CommonsCollections
) standen im Widerspruch zu denen, die von Robolectric verwendet wurden (da in meinem Erstellungspfad verschiedene Versionen derselben Bibliotheken vorhanden waren). Daher habe ich diese widersprüchlichen Versionen von dependencies (modules
) beim Hinzufügen der neuen Abhängigkeit (theValidator
) ausgeschlossen:Sie können die Abhängigkeiten Ihrer Gradle-Module (möglicherweise haben Sie nur ein Modul in Ihrem Projekt) mit dem folgenden Gradle-Befehl anzeigen (ich verwende den Gradle-Wrapper, der für Sie erstellt wird, wenn Sie Ihr Projekt in Android Studio / Intellij erstellt haben Idee). Führen Sie diesen Befehl im Stammverzeichnis Ihres Projekts aus:
./gradlew: IHR MODULNAME: Abhängigkeiten
Nachdem ich diese
exclude
Anweisungen hinzugefügt und erneut versucht hatte, sie auszuführen, wurde einduplicate file
Fehler angezeigt,NOTICE.txt
der von einigen Apache-Commons-Bibliotheken wie Protokollierung und Sammlungen verwendet wird. Ich musste diese Textdatei beim Verpacken ausschließen. In meinem build.gradle habe ich hinzugefügt:Es stellte sich heraus, dass die neue Bibliothek (die
Validator
) mit etwas älteren Versionen ihrer Abhängigkeiten / Module arbeiten kann (die bereits von einer anderen Bibliothek (Robolectric) in meinen Erstellungspfad importiert wurden). Dies war bei dieser spezifischen Bibliothek der Fall, aber andere Bibliotheken verwenden möglicherweise die neueste API der zugrunde liegenden Abhängigkeiten (in diesem Fall müssen Sie versuchen, festzustellen, ob die anderen Bibliotheken, die sich auf das in Konflikt stehende Modul / die in Konflikt stehende Abhängigkeit stützen, mit der Bibliothek arbeiten können neuere Version (durch Ausschließen der älteren Version des Moduls / der Abhängigkeit unter den Einträgen dieser Bibliotheken)).quelle
In meinem Fall wurde dieser Fehler angezeigt, wenn zwei oder mehr Bibliotheken in Konflikt stehen (gleiche Bibliothek, aber unterschiedliche Versionen). Überprüfen Sie Ihre App build.gradle im Abhängigkeitsblock.
quelle
Es gibt zwei Alternativen, die sicher funktionieren:
Wenn die oben beschriebene Methode nicht funktioniert hat, versuchen Sie es mit der nächsten.
Fügen Sie der Datei build.gradle auf App-Ebene Folgendes hinzu
quelle
Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: android/support/v4/view/MotionEventCompatEclair.class
. Was soll ich als nächstes tun?Das Aktualisieren meines Java SDK auf die neueste Version
1.7.0_79
und das Aktualisieren desSDK Location
Unter habenProject Structure
das Problem für mich gelöst.quelle
Mein Problem war, dass abgesehen davon
Ich hatte auch diese Spur:
Das Problem war, dass ich dieselbe Klasse in zwei verschiedenen Bibliotheken hinzufügte. Wenn Sie die Klassen- / JAR-Datei aus einer der Bibliotheken entfernen, wird das Projekt ordnungsgemäß ausgeführt
quelle
Für mich habe ich die gesamten Playstore-Abhängigkeiten hinzugefügt
Aber ich brauchte nur Google Map, also habe ich es spezifischer gemacht und der Fehler wurde behoben.
quelle
In meinem Fall war das Problem die Build Tools Version, die 23.0.0 rc3 war und ich wechselte zu 22.0.1 und mein Problem wurde behoben.
quelle
Möglicherweise verwenden Sie ein Kabel von geringer Qualität / ein defektes Kabel, um Ihr Gerät an den PC anzuschließen. Ich habe das Kabel ausgetauscht und es hat bei mir funktioniert.
quelle
Dieser Fehler ist auf die Verwendung einer größeren Anzahl von Bibliotheken zurückzuführen. In meinem Fall hat 'compile' com.google.android.gms: play-services-9.4.0 'diesen Fehler verursacht. Um diesen Fehler zu vermeiden, verwenden Sie beispielsweise die erforderlichen Bibliotheken Verwenden Sie dann die Kompilierung 'com.google.android.gms: play-services-maps: 9.4.0'. Geben Sie beim Hinzufügen der Abhängigkeit von google play services nur die erforderlichen Bibliotheken an. Standardmäßig enthält sie alle Bibliotheken.
quelle
gradle.build
Verwenden Sie dies in Ihrer DateiUnd es funktioniert gut.
quelle
Wenn Sie sehen möchten, was genau den Fehler verursacht, versuchen Sie, Ihr Projekt wie folgt über das Gradle-Terminal zu erstellen
./gradlew assembleDebug --stacktrace --debug
. Ich habe in meinem Fall den folgenden Fehler gesehencom.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
Dies geschah, als ich versuchte, Google Maps in mein Projekt zu integrieren. Um das Problem zu beheben, habe ich einfach die Bibliotheken überprüft, die ich aufgenommen habe
compile 'com.google.android.gms:play-services:9.8.0'
Ich habe es einfach geändert
compile 'com.google.android.gms:play-services-maps:9.8.0'
und das Problem war weg
quelle
Ich hatte den gleichen Fehler nach der Konvertierung meines Projekts in
Kotlin
. Mein Problem war, dass mein jre-Standort während des Vorgangs in einen ungültigen Pfad geändert wurde (ich frage mich, warum dies passieren konnte ... ich habe Zeit verschwendet). Es wurde dadurch behoben:Deaktivierte die
Use embedded JDK
Option, die auf eine alte JDK-Installation zeigte, und wählte die richtige aus:Nachdem dies geändert wurde, verschwand der Fehler
quelle
Für mich gearbeitet :)
Ich habe das Java auf die neueste Version 8 aktualisiert, bevor es 7 war. Dann gehe ich zu OPEN MODULE SETTING, klicke mit der rechten Maustaste auf das Projekt und ändere den JDK-Pfad in / usr / lib / jvm / java-8-oracle das neu installierte Java 8. Und starten Sie das Studio neu
Überprüfen Sie in / usr / lib / jvm den Namen des Java 8-Ordners
Ich benutze Ubuntu
quelle