Nach dem Upgrade auf Android Studio 3.1 wurde während des Builds der folgende Fehler angezeigt. Project verwendet Multidex und DX ist standardmäßig aktiviert, wie Sie im Fehler feststellen würden. Ich habe versucht, den Abhängigkeitsgraphen zu überprüfen, um zu verstehen, was los ist, habe aber bisher keine Ahnung. Interessanterweise scheitert dies nur an meiner Maschine. Ich habe alles aufgeräumt, einschließlich Neuinstallation usw., aber nichts hat funktioniert.
Hat jemand das gleiche Problem und wie haben Sie es gelöst? Oder in welche Richtung kann ich schauen?
AGPBI: {
"kind":"error",
"text":"Program type already present: Android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat",
"sources":[{}],
"tool":"D8"
}
Dies ist die Aufgabe, die fehlschlägt:
transformDexArchiveWithExternalLibsDexMergerForDebug
Ich habe ähnliche Probleme geprüft und es scheint, als würden zufällige Dinge ihr Problem beheben. Ich bin mir nicht sicher, was die wahre Ursache ist.
Ich konnte die Grundursache mithilfe der folgenden Schritte ermitteln. Es kann für jedes Problem einen anderen Anwendungsfall geben. Auf diese Weise können Sie die Grundursache ermitteln.
include non-project classes
Android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
In meinem Fall war das Problem, dass die ViewPagerIndicator-Bibliothek die Support-Bibliothek als JAR herunterlud. Das Entfernen löste das Problem.
Ich habe meine Lösung durch Ändern:
implementation 'com.Android.support:appcompat-v7:27.0.0'
zu
implementation 'com.Android.support:appcompat-v7:26.0.0'
für mich geht das.
Für meine Lösung (ich weiß nicht, dass es für Sie funktionieren wird):
Zuerst folgte ich der @Orhan Obut's
-Lösung:
Suche nach doppelten Klassen in Ihrem Projekt
Ich habe festgestellt, dass es mehr als eine Klassendatei in verschiedenen Bibliotheken gibt.
Dann lege ich die Ignorier-Anmerkung über meine Unterstützungsabhängigkeit im build.gradle (App-Ordner) meines Projektmoduls:
//noinspection GradleCompatible
implementation 'com.Android.support:appcompat-v7:28.0.0'
Ich erkannte, dass Ignoranz keine Lösung ist, da der Fehler auch nach dem Neuaufbau und Löschen/Ungültigmachen des Caches für das Projekt nicht behoben wurde.
Siehe: Infografik: 11 häufigste Android-Fehler und deren Behebung
Also habe ich mehr erforscht und diesen Link herausgefunden:
Android - Absturzabhängigkeiten verstehen und beherrschen
Es schlägt Möglichkeiten vor, Konflikte zu lösen. Daher habe ich dies meinem Absolventen gerade über den Deklarationserklärungen hinzugefügt:
configurations.all {exclude group: 'com.Android.support', module: 'support-v4'}
Wenn ich dann mithilfe der oben beschriebenen @Orhan Obut's
-Lösung nach doppelten Klassen suche, finde ich nur einen einzigen Eintrag im Ergebnis. Das bedeutete, dass es keine Duplikate gab.
Es ist auch besser, wenn Sie mit neuesten SDK- und Build-Tools auf AndroidX migrieren. Stellen Sie sicher, dass Sie nirgendwo ältere Unterstützungsabhängigkeiten haben.
Happy Coding :-)
Für die einfache Option einfach hinzufügen
configurations.all {exclude group: 'com.Android.support', module: 'support-v4'}
vor den Abhängigkeiten im build.gradle-App-Modul sollten v4-Unterstützungsbibliotheken ignoriert werden.
Für mich hilft das, solche Probleme zu lösen
alle Support-Bibliotheken (auch im Lieferumfang enthalten) reduzieren sich auf die angegebene Version
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.Android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '28.0.0-beta01'
}
}
}
}
In jedem Fall habe ich das Problem von gelöst
implementation 'com.Android.support:appcompat-v7:26.0.0'
zu
implementation 'com.Android.support:appcompat-v7:27.1.1'
Das Hinzufügen der unteren Zeile im build.gradle der App-Ebene hat für mich funktioniert
implementation 'com.Android.support:support-v4:28.0.0'
Das gleiche Problem hatte ich vor einiger Zeit. In meinem Fall verwendete die Bibliothek eines Drittanbieters die ältere AccessibilityServiceInfoCompat-Version v4 22, und ich habe bereits eine neuere Version v4 28 installiert, so dass beide Bibliotheksklassen zusammenstoßen
bei einigen Bibliotheken von Drittanbietern kann eine andere Version der Unterstützungsbibliothek verwendet werden. Sie können ./gradlew :app:dependencies
herausfinden und die aktuelle Version der Support-Bibliothek importieren.
I have my solution by change this :
Android / build.gradle
buildscript {
ext {
supportLibVersion = "27.0.3"
}
}
to
buildscript {
ext {
supportLibVersion = "26.0.0"
}
}
directory Android / app / build.gradle
defaultConfig {
multiDexEnabled true
}