playgameservices / play-games-plugin-for-unity

Google Play Games plugin for Unity
Other
3.45k stars 963 forks source link

Crash: android.app.ActivityThread.performLaunchActivity #3184

Open shefich opened 2 years ago

shefich commented 2 years ago

I have too many crashes: "android.app.ActivityThread.performLaunchActivity". Can't reproduce on my device.

Here's stack trace: `Fatal Exception: java.lang.Error FATAL EXCEPTION [main] Unity version : 2020.3.38f1 Device model : TECNO MOBILE LIMITED TECNO KG5n Device fingerprint: TECNO/F062RU/TECNO-KG5n:11/RP1A.201005.001/RU-V022-20220417:user/release-keys Build Type : Release Scripting Backend : IL2CPP ABI : arm64-v8a Strip Engine Code : true

Caused by java.lang.RuntimeException Unable to start activity ComponentInfo{com.xxx.xxx/com.google.android.gms.games.internal.v2.resolution.GamesResolutionActivity}: android.content.ActivityNotFoundException: No Activity found to handle null android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3529) android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3713) android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:85) android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135) android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95) android.app.ActivityThread$H.handleMessage (ActivityThread.java:2135) android.os.Handler.dispatchMessage (Handler.java:106) android.os.Looper.loop (Looper.java:268) android.app.ActivityThread.main (ActivityThread.java:8011) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:635) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:947)

Caused by android.content.ActivityNotFoundException No Activity found to handle null android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:2076) android.app.Activity.startIntentSenderForResultInner (Activity.java:5670) android.app.Activity.startIntentSenderForResult (Activity.java:5636) android.app.Activity.startIntentSenderForResult (Activity.java:5603) com.google.android.gms.games.internal.v2.resolution.GamesResolutionActivity.onCreate (com.google.android.gms:play-services-games-v2@@17.0.0:6) android.app.Activity.performCreate (Activity.java:8107) android.app.Activity.performCreate (Activity.java:8090) android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1309) android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3499) android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3713) android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:85) android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135) android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95) android.app.ActivityThread$H.handleMessage (ActivityThread.java:2135) android.os.Handler.dispatchMessage (Handler.java:106) android.os.Looper.loop (Looper.java:268) android.app.ActivityThread.main (ActivityThread.java:8011) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:635) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:947)`

Versions

ozdemir08 commented 2 years ago

Hi, are you using any proguard rules? Also you mention that you can't reproduce it on your device. Have you tried making a release build and running it on your test device?

shefich commented 2 years ago

Hi, I always test by adding release builds to the Play Console internal test in order to get Play Services work. I have "proguard-user.txt" file. Here it is: `-keep class com.yasirkula.unity. { ; } -keep class com.google.android.gms.games.leaderboard. { *; } -keep class com.google.android.gms.games.snapshot.* { ; } -keep class com.google.android.gms.games.achievement. { *; } -keep class com.google.android.gms.games.event. { *; } -keep class com.google.android.gms.games.stats. { ; } -keep class com.google.android.gms.games. { ; } -keep class com.google.android.gms.common.api.ResultCallback { ; } -keep class com.google.android.gms.signin. { *; } -keep class com.google.android.gms.dynamic. { *; } -keep class com.google.android.gms.dynamite. { *; } -keep class com.google.android.gms.tasks.* { ; } -keep class com.google.android.gms.security. { *; } -keep class com.google.android.gms.base. { *; } -keep class com.google.android.gms.actions.* { ; } -keep class com.google.games.bridge. { ; } -keep class com.google.android.gms.common.ConnectionResult { ; } -keep class com.google.android.gms.common.GooglePlayServicesUtil { *; } -keep class com.google.android.gms.common.api. { ; } -keep class com.google.android.gms.common.data.DataBufferUtils { ; } -keep class com.google.android.gms.nearby. { ; } -keepclassmembers class com.ironsource.sdk.controller.IronSourceWebView$JSInterface { public ; } -keepclassmembers class implements android.os.Parcelable { public static final android.os.Parcelable$Creator ; } -keep class com.ironsource.adapters. { ; } -dontwarn com.ironsource.mediationsdk. -dontwarn com.ironsource.adapters. -keepattributes JavascriptInterface -keepclassmembers class { @android.webkit.JavascriptInterface ; } -keep class com.google.unity. { *; } -keep public class com.google.android.gms.ads.*{ public ; } -keep public class com.google.ads.*{ public ; }

-keepattributes Signature,InnerClasses,Exceptions,Annotation -keep public class com.applovin.sdk.AppLovinSdk{ ; } -keep public class com.applovin.sdk.AppLovin { public protected ; } -keep public class com.applovin.nativeAds.AppLovin { public protected ; } -keep public class com.applovin.adview. { public protected ; } -keep public class com.applovin.mediation. { public protected ; } -keep public class com.applovin.mediation.ads. { public protected ; } -keep public class com.applovin.impl..AppLovin { public protected *; } -keep public class com.applovin.impl..Impl { public protected ; } -keepclassmembers class com.applovin.sdk.AppLovinSdkSettings { private java.util.Map localSettings; } -keep class com.applovin.mediation.adapters. { *; } -keep class com.applovin.mediation.adapter.*{ ; }

-keepattributes Annotation -dontobfuscate `

ozdemir08 commented 2 years ago

Could you try adding -keep class com.google.android.gms.games.internal.v2.resolution.* { ; }? This might solve your problem.

shefich commented 2 years ago

@ozdemir08 thank you, I will try it.

shefich commented 2 years ago

@ozdemir08 hi, I've tried to release the version with changes and the issue still persist. So, adding "keep class" doesn't help.

shefich commented 2 years ago

btw I can see that it started after upgrading to v11.01

shefich commented 1 year ago

I tried, but it doesn't help. I still have this issue.

чт, 1 сент. 2022 г., 18:07 Mehmet Ozdemir @.***>:

Could you try adding -keep class com.google.android.gms.games.internal.v2.resolution.* { ; }? This might solve your problem.

— Reply to this email directly, view it on GitHub https://github.com/playgameservices/play-games-plugin-for-unity/issues/3184#issuecomment-1234412826, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB77GAIVSAXHWOK7FJKHSKDV4DBELANCNFSM57PJMBYA . You are receiving this because you authored the thread.Message ID: <playgameservices/play-games-plugin-for-unity/issues/3184/1234412826@ github.com>

shefich commented 1 year ago

So any news on the fix? Have you reproduced the issue?

shefich commented 1 year ago

I can still see the crashes. Any news?

shefich commented 1 year ago

@ozdemir08 are you still seeing notifications? Or can somebody help with the issue?

shefich commented 1 year ago

Look I found several variants to fix the issue. Need somebody from engeeniring team to tell me if at least one of these is the proper fix.

  1. Found here: https://stackoverflow.com/questions/74146679/google-play-games-v2-missing-gamesresolutionactivity-error The solution is to add the following snippet to the AndroidManifest.xml file <activity android:name="com.google.android.gms.games.internal.v2.resolution.GamesResolutionActivity" android:exported="false">

  2. Use GPGS only after this check: isGooglePlayServicesAvailable()

OldSlash commented 1 year ago

Any updates on this?

shefich commented 1 year ago

No updates. I even slightly changed proguard file, but the issue still exist. New version of proguard:

-keep class com.yasirkula.unity.* { *; }

-keep class com.google.android.gms.games.PlayGames { *; }
-keep class com.google.android.gms.games.leaderboard.** { *; }
-keep class com.google.android.gms.games.snapshot.** { *; }
-keep class com.google.android.gms.games.achievement.** { *; }
-keep class com.google.android.gms.games.event.** { *; }
-keep class com.google.android.gms.games.stats.** { *; }
-keep class com.google.android.gms.games.video.** { *; }
-keep class com.google.android.gms.games.* { *; }
-keep class com.google.android.gms.common.api.ResultCallback { *; }
-keep class com.google.android.gms.signin.** { *; }
-keep class com.google.android.gms.dynamic.** { *; }
-keep class com.google.android.gms.dynamite.** { *; }
-keep class com.google.android.gms.tasks.** { *; }
-keep class com.google.android.gms.security.** { *; }
-keep class com.google.android.gms.base.** { *; }
-keep class com.google.android.gms.actions.** { *; }
-keep class com.google.games.bridge.** { *; }
-keep class com.google.android.gms.common.ConnectionResult { *; }
-keep class com.google.android.gms.common.GooglePlayServicesUtil { *; }
-keep class com.google.android.gms.common.api.** { *; }
-keep class com.google.android.gms.common.data.DataBufferUtils { *; }
-keep class com.google.android.gms.games.quest.** { *; }
-keep class com.google.android.gms.nearby.** { *; }

-keepclassmembers class com.ironsource.sdk.controller.IronSourceWebView$JSInterface {
    public *;
}
-keepclassmembers class * implements android.os.Parcelable {
    public static final android.os.Parcelable$Creator *;
}
-keep class com.ironsource.adapters.** { *;
}
-dontwarn com.ironsource.mediationsdk.**
-dontwarn com.ironsource.adapters.**
-keepattributes JavascriptInterface
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}
-keep class com.google.unity.** {
   *;
}
-keep public class com.google.android.gms.ads.**{
   public *;
}
-keep public class com.google.ads.**{
   public *;
}

-keep,includedescriptorclasses public class com.google.** { *; }

-keep class com.onesignal.** { *; }

-keepattributes *Annotation*
-dontobfuscate
oeager commented 1 year ago

image As above, the problem occurs in the method startIntentSenderForResult. I don't know what the resultReceiver is, but it should at least catch the exception of ActivityNotFound, but obviously, it doesn't.