web-dev-qa-db-ja.com

エラー:AGPBI:プログラムタイプはすでに存在しています:com.google.Android.gms.auth.api.signin.internal.zzg

GoogleログインとFirebase Cloud Messagingを使用するAdrdoiアプリで、次のエラーメッセージが表示されます。

AGPBI: {"kind":"error","text":"Program type already present: com.google.Android.gms.auth.api.signin.internal.zzg","sources":[{}]}

それは、google auth libがすでに別の場所で使用されていることを意味しますか?それは何ですか?

8
Ralf Wickum

私も同じ問題を抱えていました。

変更により変更

implementation 'com.google.firebase:firebase-auth:11.0.6'

implementation 'com.google.firebase:firebase-auth:11.2.2'

この問題は、Android 3.でfirebaseプラグインを追加した後に発生しました。

Androidプラグインのバージョンが自動的に追加されます

implementation 'com.google.firebase:firebase-auth:11.0.6' 

バージョンを11.2.2に変更する必要があります

Error Log

4
Swaminathan

帰ります 11.2.2 Firebaseのバージョン。

例えば:

から:

'com.google.firebase:firebase-core:11.4.0'

'com.google.firebase:firebase-core:11.2.2'

[〜#〜]更新[〜#〜]

11.6.0のfirebaseがリリースされても、この問題はまだ存在しています。追加したことがわかりました

compile 'com.google.firebase:firebase-core:11.6.0'    
compile 'com.google.Android.gms:play-services-location:11.6.0'  

問題が消えます。

2
John Codeos

FWIWアプリで使用する別のライブラリで同様のエラーが発生しました。回避策はAndroid.enableD8=false in gradle.properties。

またはAGP 3.0.0-beta3からbeta6にアップグレードします。

2
Eric

すべてのFirebaseライブラリが同じバージョンであることを確認してください

0
kreker

先週までダウングレード方式を使っていました。

約2週間前、Firebaseシリーズのリリースバージョンは15.0.0+です。このバグを回避しようとする場合は、ダウングレードではなく最新バージョンへの更新を検討してください。


注:一部のサードパーティパッケージにはfirebaseまたはgcmも含まれています。バージョンの一貫性にも注意してください。 (FacebookのAccountKitなど)

0
Wesely

私は尋ねた元の投稿に話します:

質問1:それは、google auth libがすでにどこかで使用されているということですか?

はい、同じ完全修飾クラス名を持つ2つ以上のコードモジュール(ライブラリ)を追加したことを意味します。 Androidは、どちらを使用するかについてあいまいさが存在するため、これは好ましくありません。

質問2:それは何ですか?

これは、含まれているソースコードまたは追加した依存関係に由来します。

人々が理解しようとしている問題は、重複するクラスがどこから来ているかです。最も簡単な最初のステップは、次のコマンドを発行することです。

gradlewアプリ:依存関係

次に、重複していると言う名前を検索します。リポジトリからのものである場合は、同じバージョンであることを確認してください。それらが同じバージョンでない場合は、重複元がどこにあるかがわかります。時々、このテクニックは複製がどこから来ているかを明らかにしません。リポジトリからライブラリを含める場合、実際にはそのライブラリとその依存関係のいずれかをロードしています。リポジトリにはjarファイルだけでなく、依存関係を定義するpom.xmlファイルもあります。 「gradlew app:dependencies」の出力には、これらの追加の依存関係は表示されません。さらに、各依存関係には追加の依存関係が存在する可能性があります。たぶんgradleはリポジトリの依存関係をトラバースする方法を持っているかもしれませんが、私はそのように知りません、私はそうは思いません。私の場合、同様のエラー原因があったときに、依存関係のあるいくつかのMavenリポジトリー・ライブラリーのpom.xmlを調べました。私の場合、「org.osgi:org.osgi.annotation:6.0.0」に依存する2つのライブラリモジュールがあり、「org.Apache.felix:org.Apache」に依存する1つのライブラリモジュールがありました。 .felix.resolver:2.0.0 "。リゾルバライブラリのpom.xmlファイルを見ると、「org.osgi:osgi.annotation:6.0.1」に依存していることがわかりました。幸い、同じクラスの異なる実装が含まれていると推測するのはかなり簡単でした。名前が、クラスの競合が含まれていることを認識できるほど近くない場合があります。そのような状況に遭遇した場合は、それらのリポジトリーjarを調べて、既存として報告されているクラスが含まれているかどうかを確認する必要があります。

上記で見たいくつかの回答では、機能するものが見つかるまで実装の依存関係を一時的に変更している人々。うまくいけば、私の答えがあなたに、重複を見つける方法を理解するためのより良い洞察を与えるでしょう。 Android Studioは、競合するクラスがどこから来ているのかを教えてくれましたか?

0
Tom Rutchik