it-swarm.com.de

Fehler: Programmtyp bereits vorhanden: Android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat

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.

10
Orhan Obut

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.

  • Gehen Sie zu Android studio
  • Navigieren Sie zu -> Klasse
  • Prüfen include non-project classes
  • Kopieren, Einfügen, vollständiger Klassenpfad mit Paketnamen. Android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
  • Sie sollten sehen können, wo es verwendet wird. Wahrscheinlich müssen Sie es von einem entfernen.

In meinem Fall war das Problem, dass die ViewPagerIndicator-Bibliothek die Support-Bibliothek als JAR herunterlud. Das Entfernen löste das Problem.

11
Orhan Obut

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.

10
mas bro

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 :-)

7
Abhinav Saxena

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.

3
Aegon

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'
            }
        }
    }
}
1
V. Kalyuzhnyu

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'
0
Waqar UlHaq

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'
0
Abhishek Tiwari

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

0
Ssubrat Rrudra

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.

0
felix
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
}
0
usman ali