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がすでに別の場所で使用されていることを意味しますか?それは何ですか?
帰ります 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'
問題が消えます。
FWIWアプリで使用する別のライブラリで同様のエラーが発生しました。回避策はAndroid.enableD8=false
in gradle.properties。
またはAGP 3.0.0-beta3からbeta6にアップグレードします。
すべてのFirebaseライブラリが同じバージョンであることを確認してください
先週までダウングレード方式を使っていました。
約2週間前、Firebase
シリーズのリリースバージョンは15.0.0+です。このバグを回避しようとする場合は、ダウングレードではなく最新バージョンへの更新を検討してください。
注:一部のサードパーティパッケージにはfirebase
またはgcm
も含まれています。バージョンの一貫性にも注意してください。 (FacebookのAccountKit
など)
私は尋ねた元の投稿に話します:
質問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は、競合するクラスがどこから来ているのかを教えてくれましたか?