microg / GmsCore

Free implementation of Play Services
https://microg.org
Apache License 2.0
8.67k stars 1.73k forks source link

DynamicLinkData class not initializable due to AbstractSafeParcelable->findCreator not finding the creator for the class. #2596

Open derMart opened 3 weeks ago

derMart commented 3 weeks ago

Describe the bug

A while ago I created a pull request https://github.com/microg/GmsCore/pull/2297 to improve / fix firebase dynamic link authentication. Back then I tried the login mechanism on my local version. Just now I tried to login in an app using the official microg release and encountered this exception:

10-26 11:16:19.939 27309 27338 E JavaBinder: *** Uncaught remote exception! Exceptions are not yet supported across processes. Client PID 27037 UID 10196.
10-26 11:16:19.939 27309 27338 E JavaBinder: java.lang.ExceptionInInitializerError
10-26 11:16:19.939 27309 27338 E JavaBinder:    at org.microg.gms.firebase.dynamiclinks.DynamicLinksServiceImpl.getDynamicLink(DynamicLinksServiceImpl.java:48)
10-26 11:16:19.939 27309 27338 E JavaBinder:    at com.google.firebase.dynamiclinks.internal.IDynamicLinksService$Stub.onTransact(IDynamicLinksService.java:70)
10-26 11:16:19.939 27309 27338 E JavaBinder:    at org.microg.gms.firebase.dynamiclinks.DynamicLinksServiceImpl.onTransact(DynamicLinksServiceImpl.java:75)
10-26 11:16:19.939 27309 27338 E JavaBinder:    at android.os.Binder.execTransactInternal(Binder.java:1500)
10-26 11:16:19.939 27309 27338 E JavaBinder:    at android.os.Binder.execTransact(Binder.java:1444)
10-26 11:16:19.939 27309 27338 E JavaBinder: Caused by: java.lang.RuntimeException: No Creator found for com.google.firebase.dynamiclinks.internal.DynamicLinkData
10-26 11:16:19.939 27309 27338 E JavaBinder:    at com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable.findCreator(AbstractSafeParcelable.java:21)
10-26 11:16:19.939 27309 27338 E JavaBinder:    at com.google.firebase.dynamiclinks.internal.DynamicLinkData.<clinit>(DynamicLinkData.java:65)
10-26 11:16:19.939 27309 27338 E JavaBinder:    ... 5 more
10-26 11:16:19.939 27309 27338 E JavaBinder: Caused by: java.lang.ClassNotFoundException: com.google.firebase.dynamiclinks.internal.DynamicLinkData$000Creator
10-26 11:16:19.939 27309 27338 E JavaBinder:    at java.lang.Class.classForName(Native Method)
10-26 11:16:19.939 27309 27338 E JavaBinder:    at java.lang.Class.forName(Class.java:607)
10-26 11:16:19.939 27309 27338 E JavaBinder:    at java.lang.Class.forName(Class.java:512)
10-26 11:16:19.939 27309 27338 E JavaBinder:    at com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable.findCreator(AbstractSafeParcelable.java:19)
10-26 11:16:19.939 27309 27338 E JavaBinder:    ... 6 more
10-26 11:16:19.939 27309 27338 E JavaBinder: Caused by: java.lang.ClassNotFoundException: com.google.firebase.dynamiclinks.internal.DynamicLinkData$000Creator
10-26 11:16:19.939 27309 27338 E JavaBinder:    ... 10 more
10-26 11:16:19.940 27309 27338 E AndroidRuntime: FATAL EXCEPTION: binder:27309_4
10-26 11:16:19.940 27309 27338 E AndroidRuntime: Process: com.google.android.gms, PID: 27309
10-26 11:16:19.940 27309 27338 E AndroidRuntime: java.lang.ExceptionInInitializerError
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at org.microg.gms.firebase.dynamiclinks.DynamicLinksServiceImpl.getDynamicLink(DynamicLinksServiceImpl.java:48)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at com.google.firebase.dynamiclinks.internal.IDynamicLinksService$Stub.onTransact(IDynamicLinksService.java:70)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at org.microg.gms.firebase.dynamiclinks.DynamicLinksServiceImpl.onTransact(DynamicLinksServiceImpl.java:75)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at android.os.Binder.execTransactInternal(Binder.java:1500)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at android.os.Binder.execTransact(Binder.java:1444)
10-26 11:16:19.940 27309 27338 E AndroidRuntime: Caused by: java.lang.RuntimeException: No Creator found for com.google.firebase.dynamiclinks.internal.DynamicLinkData
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable.findCreator(AbstractSafeParcelable.java:21)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at com.google.firebase.dynamiclinks.internal.DynamicLinkData.<clinit>(DynamicLinkData.java:65)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    ... 5 more
10-26 11:16:19.940 27309 27338 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: com.google.firebase.dynamiclinks.internal.DynamicLinkData$000Creator
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at java.lang.Class.classForName(Native Method)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at java.lang.Class.forName(Class.java:607)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at java.lang.Class.forName(Class.java:512)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    at com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable.findCreator(AbstractSafeParcelable.java:19)
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    ... 6 more
10-26 11:16:19.940 27309 27338 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: com.google.firebase.dynamiclinks.internal.DynamicLinkData$000Creator
10-26 11:16:19.940 27309 27338 E AndroidRuntime:    ... 10 more

So AbstractSafeParcelable.findCreator() is not finding the com.google.firebase.dynamiclinks.internal.DynamicLinkData$000Creator class, which, suggesting from the name could be some auto generated class.

@zainarbani I do see that you committed https://github.com/zainarbani/GmsCore/commit/ce0802da285b9ebc2bda5bd12b82ec678e752a6b in the pull request to change DynamicLinkData to extend from AbstractSafeParcelable instead of AutoSafeParcelable. Myself not familiar with these two Parcelable mechanisms, may it be possible that something is missing for the AbstractSafeParcelable to work?

To Reproduce

  1. Open a dynamic "email login link" with the appropriate app, which is internally using firebase dynamic links
  2. microg crashes

Expected behavior Microg should not crash and pass the link data to the app

System Android Version: 14 Custom ROM: LineageOS 21

derMart commented 3 weeks ago

Sorry @zainarbani, it was @marvin who refactored via https://github.com/microg/GmsCore/pull/2297/commits/3ccb5f456e7ee05bd3e445567194707b5b02fe0a