私はAndroidプロジェクトがReact-Nativeで構築され、Google Play開発者サービス(分析、クラウドメッセージング、広告)を採用しています。Firebaseを明示的に使用していません。
Playサービスを8.4.0 => 9.2.0からアップグレードしようとしました。 GPSクラスパスもアップグレードしました。
buildscript {
dependencies {
classpath 'com.google.gms:google-services:3.0.0'
...
dependencies {
compile 'com.google.Android.gms:play-services-analytics:9.2.1'
compile 'com.google.Android.gms:play-services-ads:9.2.1'
compile 'com.google.Android.gms:play-services-base:9.2.1'
compile 'com.google.Android.gms:play-services-gcm:9.2.1'
Firebaseに明示的に依存していないことに注意してください。
アップグレード以来、次のGradleビルドエラーが発生しています。
com.Android.build.api.transform.TransformException:Java.util.Zip.ZipException:重複するエントリ:com/google/firebase/FirebaseApiNotAvailableException.class
FirebaseはGoogle Play開発者サービス( 9.0以降 )にバンドルされていることを知っているので、他のものがコンパイルして古いバージョンとリンクしていると考えました。したがって、依存関係の洞察(gradle -q dependencyInsight --configuration compile --dependency firebase
)firebase-common 9.0.0が9.2.1の上に追加されていることに気づきました:
しかし、私はこれが原因を突き止めることができません。
まあ-犯人はリアクトネイティブです。
ヒントは、Gradleコンソールに表示される次のあいまいな行でした。
google-servicesプラグインは、com.google.Android.gmsまたはcom.google.firebaseのバージョンを検出できませんでした。デフォルトバージョン:9.0.0が使用されます。
修正? build.gradleに次の行を追加して、RNライブラリプロジェクトを正しいFirebaseバージョンにリンクさせます。
compile 'com.google.firebase:firebase-core:9.2.1'
したがって:
余談ですが、この問題により、私はGradleの依存関係の管理についてさらに深く検討するようになりました。 一般的な依存関係の問題の解決に関する広範な投稿 を作成しました。
問題は、build.gradleファイルで両方のプラグインを使用するため、次のような1つのGoogle Play Servicesプラグインを削除することです。
apply plugin: 'com.google.gms.google-services'
そして
compile 'com.google.Android.gms:play-services:11.0.2'
したがって、1つのライブラリの両方を削除してから追加します
packagingOptions {
exclude 'META-INF/NOTICE' // It is not include NOTICE file
exclude 'META-INF/LICENSE' // It is not include LICENSE file
}
Java.util.Zip.ZipException:重複するエントリ:com/google/firebase/iid/zzb.class
これに従ってください。現在のGoogle Playサービスの依存関係を削除し、Android= Studioのモジュール選択設定と依存関係の選択タブでファイルに移動してください。スタジオでのサービスと追加
私の場合、私はこれをapp/build.gradleで使用していました:
compile 'com.google.Android.gms:play-services-location:9.8.0'
compile 'com.google.Android.gms:play-services-maps:9.8.0'
署名済みAPKを生成しようとしたときのエラーは次のとおりです。
Error:Execution failed for task ':app:transformClassesWithJarMergingForRelease'.
> com.Android.build.api.transform.TransformException: Java.util.Zip.ZipException: duplicate entry: com/google/firebase/FirebaseApiNotAvailableException.class
上記の2行を削除してapp/build.gradleを変更し、代わりにこれを使用しました。
compile 'com.google.Android.gms:play-services:9.8.0'
もちろん、「play-services」は完全なバンドルであり、これを行うための最適化された方法ではありません。必要な特定のサービスを指定することをお勧めします(read Does "play-services:9.8.0" include "play-services-location:9.8.0"? )が、今のところは私の場合はエラーを修正します。