firebase / firebase-unity-sdk

The Firebase SDK for Unity
http://firebase.google.com
Apache License 2.0
201 stars 34 forks source link

[Bug] Firebase + Play Review and Play Update causes duplicate class gradle error #431

Closed Nyankoo closed 1 year ago

Nyankoo commented 1 year ago

[REQUIRED] Please fill in the following fields:

[REQUIRED] Please describe the issue here:

When adding the newest Play Review and Play Update versions (1.8.0), a duplicate class error is thrown on compile.

When I understand it correctly, this is caused by a Firebase dependency, described here: https://github.com/firebase/firebase-android-sdk/issues/3860

Is this fix planned for the next Firebase update?

Steps to reproduce:

Have you been able to reproduce this issue with just the Firebase Unity quickstarts (this GitHub project)? What's the issue repro rate? (eg 100%, 1/5 etc)

What happened? How can we make the problem occur? This could be a description, log/console output, etc.

If you have a downloadable sample project that reproduces the bug you're reporting, you will likely receive a faster response on your issue.

Relevant Code:

// TODO(you): code here to reproduce the problem
paulinon commented 1 year ago

Hi @Nyankoo,

Could you provide the error message being returned? This may be a case of something being fixed and then broken again in the SDK.

Nyankoo commented 1 year ago

@paulinon Thank you for looking into this, you can find the error code below!

One thing I noticed is that I tested this with only Auth in the project and the exception wasn't happening. But after adding Firestore through UPM, it caused below exception.

* What went wrong:
Execution failed for task ':launcher:checkReleaseDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: Duplicate class com.google.android.play.core.appupdate.AppUpdateInfo found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.AppUpdateManager found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.AppUpdateManagerFactory found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.AppUpdateOptions found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.AppUpdateOptions$Builder found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.testing.FakeAppUpdateManager found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zza found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzaa found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzb found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzc found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzd found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zze found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzf found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzg found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzh found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzi found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzj found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzk found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzl found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzm found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzn found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzo found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzp found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzq found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzr found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzs found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzt found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzu found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzv found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzw found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzx found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzy found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.appupdate.zzz found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.common.IntentSenderForResultStarter found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-core-common-2.0.0-runtime.jar (com.google.android.play:core-common:2.0.0)
  Duplicate class com.google.android.play.core.common.LocalTestingException found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-core-common-2.0.0-runtime.jar (com.google.android.play:core-common:2.0.0)
  Duplicate class com.google.android.play.core.common.PlayCoreDialogWrapperActivity found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-core-common-2.0.0-runtime.jar (com.google.android.play:core-common:2.0.0)
  Duplicate class com.google.android.play.core.install.InstallException found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.InstallState found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.InstallStateUpdatedListener found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.NativeInstallStateUpdateListener found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.model.ActivityResult found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.model.AppUpdateType found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.model.InstallErrorCode found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.model.InstallStatus found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.model.UpdateAvailability found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.model.zza found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.install.zza found in modules jetified-app-update-2.0.0-runtime.jar (com.google.android.play:app-update:2.0.0) and jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3)
  Duplicate class com.google.android.play.core.listener.StateUpdatedListener found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-core-common-2.0.0-runtime.jar (com.google.android.play:core-common:2.0.0)
  Duplicate class com.google.android.play.core.review.ReviewException found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.ReviewInfo found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.ReviewManager found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.ReviewManagerFactory found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.model.ReviewErrorCode found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.model.zza found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.testing.FakeReviewManager found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.zza found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.zzb found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.zzc found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.zzd found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.zze found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.zzf found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.zzg found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.zzh found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
  Duplicate class com.google.android.play.core.review.zzi found in modules jetified-core-1.10.3-runtime.jar (com.google.android.play:core:1.10.3) and jetified-review-2.0.0-runtime.jar (com.google.android.play:review:2.0.0)
paulinon commented 1 year ago

Hi @Nyankoo,

Could you share your mainTemplate.gradle file so that we could analyze what dependencies the SDK is pointing at?

Nyankoo commented 1 year ago

@paulinon Sure, here you go!

mainTemplate.zip

paulinon commented 1 year ago

Thanks for this @Nyankoo,

Upon checking the file, it seems that it doesn't have the firebase-dynamic-module-support dependency as mentioned in the bug you referenced. Could you confirm if you're facing the same error message with just Play Review and Play Update in your implementation?

Could you also try if replacing the Play Core dependency with the Play Feature Delivery makes a difference? This seems to be related to the fix for the bug you referenced.

Nyankoo commented 1 year ago

@paulinon It seems the issue is caused by another plugin, which pulls the duplicate library in on build. I'm closing this, as it seems it doesn't have anything to do with the Firebase SDK and Firestore triggering it was just coincidence.