Ich habe Android Studio Beta. Ich habe ein neues Projekt mit dem Kompilieren meiner alten Module erstellt, aber als ich versuchte, die App zu starten, wurde sie nicht mit der folgenden Meldung gestartet:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
com.android.builder.dexing.DexArchiveMergerException: Dex kann nicht zusammengeführt werden
Aber ich weiß nicht, wie ich diesen Fehler lösen soll. Ich habe das stundenlang gegoogelt, aber ohne Erfolg.
Mein Projekt gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-beta6'
classpath "io.realm:realm-gradle-plugin:3.7.1"
classpath 'com.google.gms:google-services:3.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
google()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Meine App gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "parad0x.sk.onlyforyou"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
}
}
compileOptions {
targetCompatibility 1.7
sourceCompatibility 1.7
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
lintOptions {
checkReleaseBuilds false
}
productFlavors {
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
//noinspection GradleCompatible
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile project(path: ':loginregisterview')
}
Und mein Modul gradle:
apply plugin: 'com.android.library'
apply plugin: 'realm-android'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.0.2'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.github.bumptech.glide:glide:4.0.0'
testCompile 'junit:junit:4.12'
compile project(path: ':parser')
}
Mein zweites Modul:
apply plugin: 'com.android.library'
apply plugin: 'realm-android'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
realm {
syncEnabled = true
}
useLibrary 'org.apache.http.legacy'
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile 'junit:junit:4.12'
// compile 'com.android.support:appcompat-v7:23.1.0'
// compile 'com.fasterxml.jackson.core:jackson-core:2.9.0'
// compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
// compile 'com.fasterxml.jackson.core:jackson-databind:2.9.0'
compile 'com.google.code.gson:gson:2.6.2'
}
____________finden_________
Als ich das zweite Modul (Parser) nicht importierte, stürzte die App nicht auf dex ab, aber als das Modul nicht importiert wurde, funktionierte die App nicht. : D: D.
android
dex
android-studio-3.0
Parad0X
quelle
quelle
Antworten:
Ich hatte das gleiche Problem beim Aktualisieren von
com.google.android.gms:play-services:11.2.2
aufcom.google.android.gms:play-services:11.4.0
. Das hat es für mich gelöst:quelle
multiDexEnabled true
allein nichtIch habe alles versucht und keiner von ihnen hilft. Endlich finde ich diese Arbeit für mich:
app / build.gradle:
quelle
Beachten Sie die Warnungen!
Manchmal müssen Sie nur Warnungen entfernen, und der Fehler wird automatisch behoben . Siehe unten Sonderfall:
Ich hatte diese beiden Abhängigkeiten in meiner
build.gradle
Datei auf Modulebene :und Studio hatten gewarnt ( zusätzlich zum Dex-Zusammenführungsproblem ):
Also habe ich explizit die Version von bestimmt
com.android.support:support-v4
(siehe hier für Details) und beide Probleme (die Warnung und die im Zusammenhang mit der Dex-Zusammenführung) gelöst :Siehe ähnliche Kommentare für andere ähnliche Situationen.
quelle
support:design:26.1.0
, und diese Abhängigkeit hatte ich noch nicht. Die Version meiner anderen Support-Bibliotheken war 27.1.0. Nach dem Hinzufügen dersupport:design
Abhängigkeit von der27.1.0
Version wurde mein Problem behoben.In meinem Fall haben leider weder Michels noch Suragchs Lösungen für mich funktioniert.
Also habe ich dieses Problem folgendermaßen gelöst:
In gradle: 3.0 ist die Kompilierungskonfiguration jetzt veraltet und sollte durch Implementierung oder API ersetzt werden . Weitere Informationen finden Sie hier. Sie können die offiziellen Dokumente im Gradle Build Tool lesen
Es ist besser, die Implementierung oder API zu verwenden , als zu kompilieren
Ersetzen Sie einfach compile durch Implementierung , debugCompile durch debugImplementation , testCompile durch testImplementation und androidtestcompile mit androidTestImplementation
Zum Beispiel: Stattdessen
benutze so
Nachdem
Hoffe es wird helfen!
quelle
.gradle
und nicht./gradle
Löschen Sie das
.gradle
Verzeichnis.Führen Sie Ihre App erneut aus.
Anmerkungen
.gradle
Verzeichnis befindet sich im Stammordner Ihres Projekts. (Möglicherweise müssen Sie zuerst versteckte Dateien anzeigen.)quelle
Das Löschen,
.gradle
wie von Suragch vorgeschlagen, war mir nicht genug. Zusätzlich musste ich eine durchführenBuild > Clean Project
.Beachten Sie, dass
.gradle
Sie zum Anzeigen im Navigator oben links zur Ansicht "Projekt" wechseln müssen:quelle
Ich habe jede andere Lösung ausprobiert, aber niemand hat für mich gearbeitet. Am Ende habe ich es gelöst, indem ich dieselbe Abhängigkeitsversion durch Bearbeiten verwendet habe
build.gradle
. Ich denke, dieses Problem tritt auf, wenn eine Bibliothek zu Gradle hinzugefügt wird, die eine andere Abhängigkeitsversion der Support- oder Google-Bibliotheken verwendet.Fügen Sie Ihrer Build-Gradle-Datei folgenden Code hinzu. Dann
clean
undrebuild
projizieren.quelle
wenn (1. Versuchen Sie, die Arbeit zu reinigen und wieder aufzubauen), dann gut
sonst wenn (2. versuchen Gradle Arbeit zu entfernen) dann gut
else-> 3. Versuchen Sie, grade.properties hinzuzufügen
else-> 4. Fügen Sie
multiDexEnabled
Ihrem build.gradle true hinzuund fügen Sie die Abhängigkeit hinzu
Es mag das erste sein, das für dich funktioniert und so weiter, aber es hängt zum Beispiel wirklich von der Art deines Problems für mich ab
Ich habe den Fehler erhalten, nachdem ich diese Bibliothek hinzugefügt habe
und später stellte ich fest, dass ich das überprüfen und dieselbe Version der Support-Bibliotheken hinzufügen muss. Also muss ich eine andere Version ausprobieren
und es behebt das Problem. Also pass auf.
quelle
In meinem Fall lag das Problem an der Raumbibliothek:
Ändern zu:
hat funktioniert.
quelle
Nur um die obigen Lösungen zu ergänzen:
Stellen Sie sicher, dass Sie keine doppelten Abhängigkeiten haben, die an mehreren Stellen (oder sogar in derselben Datei) auf verschiedene Versionen davon verweisen.
quelle
Hallo ich habe das gleiche Problem fast alles ausprobiert. Also habe ich mich nach 6 Stunden Kampf endgültig entschlossen, indem ich alles Zeile für Zeile debuggt habe.
Google-Services 3.0 Unterstützt Firebase mit Studio 3.0 mit playServiceVersion: 11.6.0 oder weniger nicht.
Lösung:
Ich habe Google Services auf geändert
Und es unterstützt Firebase-Dienste.
Hoffentlich spart jemand seine Zeit.
quelle
Aktivieren
defaultConfig {multiDexEnabled true}
Wenn Schritt 1 nicht funktioniert, dann
Gehen Sie zur Projektstruktur und finden Sie die externe Bibliothek heraus, die eine andere Version verwendet. Doppelklicken Sie darauf und löschen Sie die JAR-Datei. Schließen Sie das Projekt und öffnen Sie es erneut. Android Studio erstellt das Projekt neu. Das Problem sollte weg sein.
quelle
Eine der Möglichkeiten ist: das Vorhandensein derselben Bibliothek, jedoch mit unterschiedlichen Versionen in den Abhängigkeiten .
Ich hatte dieses Problem mit den folgenden Zeilen in der Gradle-Datei:
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.google.code.gson:gson:2.8.2'
Die gson-Bibliothek befand sich in meinem libs-Verzeichnis, jedoch mit einer früheren Version. Ich habe das gelöscht
gson-2.3.1.jar
aus dem libs-Verzeichnis und alles ist wieder normal.quelle
compile fileTree(include: ['*.jar'], dir: 'libs')
behoben für mich auch .. danke (y)Wenn dieser Fehler nach dem Einbeziehen der Kotlin-Unterstützung bei Ihnen aufgetreten ist und keine der anderen Lösungen funktioniert, ändern Sie die Kotlin-Abhängigkeit der App-Module
build.gradle
in:Dies funktioniert für mich unter Android Studio 3.0 Beta 6. Weitere Erklärungen finden Sie in dieser Antwort.
quelle
Mit Android Studio 3.0 stabiler Build Die folgenden Schritte haben bei mir funktioniert:
quelle
[DEX SOLVED KANN NICHT MERGEN] Nach stundenlangem Überlaufen des Stapels habe ich den Fehler "DEX ERROR NICHT MERGEN MÖGLICH" behoben.
Ursache - Android hat die Unterstützungsbibliotheken auf Version 27.1.0 aktualisiert, sodass Sie alle Android-Unterstützungszeilen in Ihrer Gradle-Datei von 26.1.0 auf 27.1.0 ändern müssen
Stellen Sie sicher, dass der Abschnitt "Repositorys" einen Maven-Abschnitt mit dem Endpunkt " https://maven.google.com " enthält. Zum Beispiel:
allprojects {repositories {jcenter () maven {url " https://maven.google.com "}}}
Ursache: - Android kann die Support-Bibliotheken im SDK-Manager nicht aktualisieren und verwendet jetzt maven.google.com zum Aktualisieren. Sie müssen dies also einschließen, um 27.1.0-Support-Bibliotheken zu verwenden
Nach Änderung der Version: 1. Projekt bereinigen 2. Projekt neu erstellen
quelle
Fügen Sie die folgenden Befehle hinzu:
quelle
Installieren von Google Play Services (neueste Version) + einschließlich
in build.gradle hat das Problem für mich gelöst, stellen Sie sicher, dass Sie das Projekt bereinigen und neu erstellen!
quelle
In meinem Fall war es gson-2.8.1.jar, das ich dem libs- Ordner des Projekts hinzugefügt habe . Aber die Referenz war schon da von SDK. Es war also nicht notwendig, gson-2.8.1.jar zum libs-Ordner hinzuzufügen .
Als ich es herausnahm, wurde das gson-2.8.1.jar- Projekt ohne diesen Fehler kompiliert.
Versuchen Sie also, den libs- Ordner und die Abhängigkeiten zu überarbeiten .
quelle
Ich stimme Chris-Jr. Wenn Sie Firebase zum Einbetten Ihrer AdMob-Anzeigen verwenden (oder auch nicht), enthält die Play-Services-Analyse die Play-Services-Anzeigen, obwohl Sie dies nicht als Abhängigkeit hinzufügen. Google hat bei der Einführung von 11.4.0 offensichtlich einen Fehler gemacht, da die Analyse Version 10.0.1 von Anzeigen enthält, nicht 11.4.0 (der Mauszeiger über den Hinweis im Gradle zeigt dies).
Ich habe oben die Kompilierung 'com.google.android.gms: play-services-ads: 11.4.0' manuell hinzugefügt , die funktioniert hat, aber erst, nachdem ich Instant Run deaktiviert habe: http://stackoverflow.com/a/35169716/530047
Es wird also entweder auf 10.0.1 zurückgeführt oder die Anzeigen hinzugefügt und Instant Run deaktiviert. Das habe ich gefunden, wenn es jemandem hilft.
quelle
Ich bin auf dasselbe Problem gestoßen und habe den wahren Grund für meinen Fall gefunden. Zuvor habe ich auch alle vorherigen Antworten erneut versucht, aber das Problem wurde dadurch nicht gelöst. Ich habe zwei Module in meinem Wear-App-Projekt und das build.gradle wie folgt:
build.gradle des Verschleißmoduls:
build.gradle des gemeinsamen Moduls:
Vor dem Upgrade auf Gradle 3.x werden alle "Implementierungen" "kompiliert".
Ich führe gradlew mit der Option --stacktrace aus, um den Stack-Trace abzurufen. Wenn dieses Problem auftritt, können Sie dies einfach im Gradle-Konsolenfenster anklicken. Und stellte fest, dass sich die Abhängigkeit vom jar-Paket wiederholte:
Klasse SportZusammenfassung im Farmer-Motion-1.0.jar-Paket, nachdem ich den offiziellen Migrationsleitfaden gelesen hatte , änderte ich mein build.gradle wie folgt:
build.gradle des Verschleißmoduls:
gemeinsames Modul 的 build.gradle:
Jetzt hat das Verschleißmodul die Abhängigkeit vom Export von Farmer-Motion-1.0.jar durch ein gemeinsames Modul. Wenn zur Laufzeit keine Abhängigkeit vom JAR-Paket besteht, kann die Abhängigkeit der Implementierung des JAR-Pakets auch in "compileOnly" geändert werden .
quelle
Ich hatte auch das Problem.
Ich konnte durch Ändern
compileSdkVersion
undtargetSdkVersion
auf die neueste Version lösen .quelle
Für unser Projekt haben wir versehentlich zweimal dasselbe Glas mit unterschiedlichem Namen hinzugefügt. Das Entfernen eines davon löste das Problem.
quelle
libs
Ordner zwei JAR-Dateien, von denen eine nur eine Sicherungskopie der anderen ist, aber einen anderen Dateinamen hat.Dies ist möglicherweise nicht Ihr Problem, aber ich habe diesen Fehler erhalten, als ich versehentlich zwei identische (aber unterschiedlich benannte) Bibliotheken in den Abschnitt "Abhängigkeiten {}" des Projekts aufgenommen habe.
quelle
Für mich war es die Aktualisierung der Firebase-Nachrichten in app \ build.gradle:
zu
quelle
Eine der möglichen Hauptursachen: doppelte vorübergehende Abhängigkeiten, die beim Android Studio-Import von Projekten mit mehreren Modulen nicht ordnungsgemäß behandelt wurden. Überprüfen Sie Ihre Liste und entfernen Sie sie. Für mich war das Update buchstäblich das Folgende:
quelle
Ich finde den Grund für dieses Problem für mein Projekt heraus. In build.gradle wurde mir zweimal eine Abhängigkeit hinzugefügt . Einmal durch Hinzufügen einer Abhängigkeit und einmal durch Hinzufügen einer JAR-Abhängigkeit:
kompiliere 'org.achartengine: achartengine: 1.2.0'
...
Implementierungsdateien ('../ achartengine-1.2.0.jar')
Nach dem Entfernen der ersten Zeile Problem gelöst.
quelle
Falls die Top-Antworten für Sie nicht funktioniert haben, besteht Ihr Problem möglicherweise darin, dass Sie mehrere Abhängigkeiten haben, die von derselben Bibliothek abhängen.
Hier sind einige Debugging-Tipps. In diesem Beispielcode
com.google.code.findbugs:jsr305:3.0.0
befindet sich die fehlerhafte Bibliothek.Reinigen und erstellen Sie jedes Mal neu, wenn Sie Änderungen vornehmen, um Ihre Lösung zu überprüfen!
Bauen Sie mit der
--stacktrace
Flagge für mehr Details. Es wird sich über eine Klasse beschweren, Google diese Klasse, um die Bibliothek zu finden. So können Sie Android Studio so einrichten, dass Gradle immer mit der--stacktrace
Flagge ausgeführt wird .Werfen Sie
View > Tool Windows > Gradle Console
nach einem Build einen Blick auf die Gradle-Konsole in Android StudioÜberprüfen Sie die Ausführung auf wiederholte Abhängigkeiten
./gradlew -q app:dependencies
. Sie können dies jedes Mal erneut ausführen, wenn Sie Ihr build.gradle ändern.In build.gradle,
In build.gradle,
In build.gradle,
Wenn sich einige Ihrer Abhängigkeiten in JAR-Dateien befinden, öffnen Sie die JAR-Dateien und prüfen Sie, ob widersprüchliche Klassennamen vorhanden sind. Wenn dies der Fall ist, müssen Sie wahrscheinlich die Gläser mit neuen Klassennamen neu erstellen oder die Schattierung untersuchen .
Noch etwas Hintergrundlesung:
quelle
quelle
In meinem Fall macht eine Bibliothek dieses Problem. Die Bibliothek wurde erfolgreich zum Projekt hinzugefügt, aber wenn ich meine App ausführe, wird mir dieser Fehler angezeigt. Wenn Ihnen dies auch passiert, können Sie zu Github gehen und Probleme überprüfen oder neue Probleme ansprechen. Wenn Sie keine Lösung für die Bibliothek finden, empfehle ich Ihnen, diese zu ersetzen.
quelle