Fehler: AGPBI: Programm-Typ bereits vorhanden: com.google.android.gms.auth.api.signin.intern.zzg
In meinem Adrdoi app, wo ich einen Google-Login und der Feuerstellung Cloud-Messaging, bekomme ich diese Fehlermeldung:
AGPBI: {"kind":"error","text":"Program type already present: com.google.android.gms.auth.api.signin.internal.zzg","sources":[{}]}
Bedeutet das, dass die google auth lib war bereits woanders verwendet? Was ist das denn her?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem.
Geändert werden indem
zu
Das Problem passiert nach dem hinzufügen des FB-plugin auf Android 3.
Android-Plugin fügt automatisch
aber wir müssen das ändern der version 11.2.2
FWIW, ich hatte einen ähnlichen Fehler mit einer anderen Bibliothek, die ich benutze in meiner app, und der workaround für mich war die Einstellung
android.enableD8=false
im gradle.Eigenschaften.Oder ein Upgrade von AGP-3.0.0-beta3 zu beta6.
android.enableD8=false
im gradle.protertiesandroid.enableD8=false
veraltet?The option 'android.enableD8' is deprecated and should not be used anymore. Use 'android.enableD8=true' to remove this warning.
Gehen Sie zurück zu
11.2.2
version von FB.Beispiel:
Aus:
zu
UPDATE
Sogar 11.6.0 der FB freigegeben wurde, ist dieses problem immer noch vorhanden. Ich fand heraus, hinzufügen
problem verschwindet.
Stellen Sie sicher, dass alle FB-Bibliotheken die gleiche version
War ich mit der downgrade Methode, bis Letzte Woche.
Etwa 2 Wochen
Firebase
- Serie, hat das release-version 15.0.0+, jeder, der versucht zu vermeiden, diese Fehler sollten überlegen, update auf neueste version eher als downgrade.Hinweis : Einige 3rd-party-Pakete umfassen auch
firebase
odergcm
sollten Sie sich bewusst sein, Ihre version konsistente auch. (wieAccountKit
von Facebook)Werde ich sprechen, um den original-Beitrag, der fragte:
Frage 1: bedeutet das, dass die google auth lib war bereits woanders verwendet?
Ja, es bedeutet, dass Sie Hinzugefügt haben zwei oder mehreren code-Modulen (Bibliotheken), die haben beide den gleichen voll qualifizierten Klassennamen. Android nicht mag, da es eine Mehrdeutigkeit, welche verwendet werden soll.
Frage 2: Was ist das denn her?
Es kommt aus dem mitgelieferten source-code oder eine Abhängigkeit, die Sie Hinzugefügt haben.
Das problem, das Leute haben versucht, herauszufinden, wo die doppelten Klassen kommen. Der einfachste erste Schritt ist, den folgenden Befehl ausgeben
:
gradlew app:Abhängigkeiten
dann eine Suche für den Namen, den er sagt, ist dupliziert. Stellen Sie sicher, dass, wenn Sie kommen aus einem repository, dass Sie die gleiche version. Wenn Sie nicht die gleiche version sind, dann haben Sie herausgefunden, wo Ihre Duplikate aus. Manchmal, diese Technik nicht offenbaren, wo die doppelte kommen. Wenn Sie eine Bibliothek aus einem repository, die Sie eigentlich laden, der Bibliothek und alle seine Abhängigkeiten. Das repository hat nicht nur die jar-Datei, sondern es hat auch eine pom.xml Datei, die definiert, deren Abhängigkeiten. Die "gradlew app:Abhängigkeiten" - Ausgabe nicht zeigt diese zusätzlichen Abhängigkeiten. Zusätzlich, jede Abhängigkeit, können zusätzliche Abhängigkeiten. Vielleicht gradle ist ein Weg, um die traverse von repository-Abhängigkeiten, aber ich weiß nicht wie, und ich denke, nicht. In meinem Fall, wenn ich hatte den ähnlichen Fehler verursachen schaute ich in das pom.xml einige maven-repository Bibliotheken, die ich hatte, eine Abhängigkeit auf. In meinem Fall hatte ich zwei library-Module, die hatte eine Abhängigkeit auf "org.osgi-Bundle:org.osgi.Anmerkung:6.0.0" und ich hatte ein library-Modul, das eine Abhängigkeit auf "org.apache.felix:org.apache.felix.resolver:2.0.0". Als ich sah auf die pom.xml Datei für die resolver-Bibliothek, die ich bemerkt hatte, dass Sie eine Abhängigkeit von "org.osgi:osgi.Anmerkung:6.0.1". Zum Glück, es war ziemlich einfach für mich, zu erraten, dass diese enthalten unterschiedliche Implementierungen für die gleiche Klasse. Manchmal sind die Namen nicht nah genug für Sie zu erkennen, dass Sie enthalten Klasse Konflikte. Es laufen in dieser situation, Sie müssen sich in die repository-Gläser, um zu sehen, wenn Sie das tun, enthalten die Klasse ist, in der berichtet wird, wie die bereits bestehenden.
In einigen der Antworten, die ich haben oben gesehen, Leute, die wo nur adhocly ändern der Umsetzung Abhängigkeiten, bis Sie eine gefunden, die funktioniert. Hoffentlich wird meine Antwort gibt Ihnen einen besseren Einblick in herauszufinden, wie man die Duplikate. Wäre es nicht toll, in Android Studio nur gesagt, wo die Klassen in Konflikt kommen?