lschmierer / android_play_install_referrer

A Flutter plugin for the Android Play Install Referrer API.
BSD 2-Clause "Simplified" License
21 stars 21 forks source link

Dead Object Exception #21

Open sharansingh00002 opened 2 years ago

sharansingh00002 commented 2 years ago

Getting a dead object exception


android.os.DeadObjectException: null
    at android.os.BinderProxy.transactNative(BinderProxy.java)
    at android.os.BinderProxy.transact(BinderProxy.java:545)
    at com.google.android.a.a.b(BaseProxy.java:2)
    at com.google.android.finsky.externalreferrer.IGetInstallReferrerService$Stub$Proxy.c(IGetInstallReferrerService.java:3)
    at com.android.installreferrer.api.InstallReferrerClientImpl.getInstallReferrer(InstallReferrerClientImpl.java:5)
    at de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin.handleOnInstallReferrerSetupFinished(AndroidPlayInstallReferrerPlugin.kt:86)
    at de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin.access$handleOnInstallReferrerSetupFinished(AndroidPlayInstallReferrerPlugin.kt:17)
    at de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin$getInstallReferrer$1.onInstallReferrerSetupFinished(AndroidPlayInstallReferrerPlugin.kt:72)
    at com.android.installreferrer.api.InstallReferrerClientImpl$InstallReferrerServiceConnection.onServiceConnected(InstallReferrerClientImpl.java:4)
    at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:2022)
    at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:2054)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7950)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:603)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
java.lang.reflect.InvocationTargetException: null
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:603)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:613)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)```
noinskit commented 2 years ago

I'm also hitting this, with nearly identical stack traces.

lschmierer commented 2 years ago

How often and under what circumstances do you get this error? Is the app e.g. in background? Or do you call await AndroidPlayInstallReferrer.installReferrer multiple times?

Ruslan660 commented 2 years ago

Also hitting this in crashlytics

image
atrope commented 2 years ago

We are Having the same crash:

java.lang.RuntimeException: 
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:612)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Caused by: java.lang.reflect.InvocationTargetException: 
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Caused by: android.os.DeadObjectException: 
  at android.os.BinderProxy.transactNative (Native Method)
  at android.os.BinderProxy.transact (BinderProxy.java:605)
  at com.google.android.a.a.b (BaseProxy.java:2)
  at com.google.android.finsky.externalreferrer.IGetInstallReferrerService$Stub$Proxy.c (IGetInstallReferrerService.java:3)
  at com.android.installreferrer.api.InstallReferrerClientImpl.getInstallReferrer (InstallReferrerClientImpl.java:1)
  at de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin.handleOnInstallReferrerSetupFinished (AndroidPlayInstallReferrerPlugin.kt:85)
  at de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin.access$handleOnInstallReferrerSetupFinished (AndroidPlayInstallReferrerPlugin.kt:17)
  at de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin$getInstallReferrer$1.onInstallReferrerSetupFinished (AndroidPlayInstallReferrerPlugin.kt:72)
  at com.android.installreferrer.api.InstallReferrerClientImpl$InstallReferrerServiceConnection.onServiceConnected (InstallReferrerClientImpl.java:4)
  at android.app.LoadedApk$ServiceDispatcher.doConnected (LoadedApk.java:2084)
  at android.app.LoadedApk$ServiceDispatcher$RunConnection.run (LoadedApk.java:2116)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8645)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)

All OS: Screen Shot 2022-08-01 at 11 18 31

atrope commented 2 years ago

@lschmierer We only call once in the app lifetime. In main.dart.

 if (Platform.isAndroid) {
    final isFirstRun = await _getFirstRun();
    if (isFirstRun) {
      final referrerDetails = await AndroidPlayInstallReferrer.installReferrer;
      if (referrerDetails.installReferrer != null) {
        final ref = referrerDetails.installReferrer;
      }
    }
  }

First run checks if has local storage key.

prasad-anecure commented 1 year ago
Caused by android.os.DeadObjectException:
       at android.os.BinderProxy.transactNative(BinderProxy.java)
       at android.os.BinderProxy.transact(BinderProxy.java:571)
       at com.google.android.a.a.android.os.Parcel b(android.os.Parcel)(:8)
       at com.google.android.finsky.externalreferrer.IGetInstallReferrerService$Stub$Proxy.android.os.Bundle c(android.os.Bundle)(:7)
       at com.android.installreferrer.api.InstallReferrerClientImpl.com.android.installreferrer.api.ReferrerDetails getInstallReferrer()(:26)
       at de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin.void handleOnInstallReferrerSetupFinished(int)(:76)
       at de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin.void access$handleOnInstallReferrerSetupFinished(de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin,int)()
       at de.lschmierer.android_play_install_referrer.AndroidPlayInstallReferrerPlugin$getInstallReferrer$1.void onInstallReferrerSetupFinished(int)(:2)
       at com.android.installreferrer.api.InstallReferrerClientImpl$InstallReferrerServiceConnection.onServiceConnected(:25)
       at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:2096)
       at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:2129)
       at android.os.Handler.handleCallback(Handler.java:938)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:231)
       at android.os.Looper.loop(Looper.java:338)
       at android.app.ActivityThread.main(ActivityThread.java:8065)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:579)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1045)
kartikcy commented 8 hours ago

Did we find any reason/solution for this ? Getting the same error across production release. I have made sure that installReferrer is called only once when the user is under authentication process. Can this happen if a user has installed the app, but hasn't launched it or has launched it but not logged in and closed the app, will that cause the referral data to be lost and when the user finally tries to login the referralData will not be found and dead object exception will be thrown ?