Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unity game started crashing on android 8

Got following stacktrace from Android Vitals:

java.lang.Error: FATAL EXCEPTION [main]
Unity version     : 5.6.2f1
Device model      : samsung SM-G955F
Device fingerprint: samsung/dream2ltexx/dream2lte:8.0.0/*****/***********B7:user/release-keys
Caused by
  at bitter.jnibridge.JNIBridge.invoke (Native Method)
  at bitter.jnibridge.JNIBridge$a.invoke (Unknown Source:20)
  at java.lang.reflect.Proxy.invoke (Proxy.java:913)
  at $Proxy1.onBindingDied (Unknown Source)
  at android.app.LoadedApk$ServiceDispatcher.doConnected (LoadedApk.java:1652)
  at android.app.LoadedApk$ServiceDispatcher$RunConnection.run (LoadedApk.java:1685)
  at android.os.Handler.handleCallback (Handler.java:789)
  at android.os.Handler.dispatchMessage (Handler.java:98)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6938)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

Have no clue. Any help or explanation will be welcome.

like image 566
Kefrens Avatar asked May 22 '18 13:05

Kefrens


2 Answers

We were seeing the same error out of a large portion of our player base. We were able to contact Unity and get some insight into the error.

From Unity Enterprise Support:

We are aware of the issue. We fixed it in 2017.3 after upgrading the JNIbridge to support Oreo APIs. Previous reports describe that when a Unity application that has INTERNET permission is running, and the Google play services is updated, stopped or reboot, it will cause the app to crash in Android 8, 8.1 devices.

The problem is that ServiceConnection.onBindingDied which was added in API level 26 is not implemented before 2017.3; we added this for GoogleAdsServiceConnection in such version an also updated the JNIbridge to solve the problem.

I'm able to reproduce it in an empty project by setting Internet Access to "Require" and when running on the device, go to settings ->Apps & notifications->google play services->storage->MANAGE SPACE->CLEAR ALL DATA, then the app crashes as described in Stack Overflow.

Do you have plans to upgrade your project to 2017.4 LTS?

I'm asking because we think that a backport of the fix is not feasible, not only because it would be for a version for which we no longer create patches (5.6.x) but an appropriate fix would involve backporting the full support for Oreo APIs which might be tricky and may cause regressions.

We have decided to try and upgrade our Unity Version from 5.6.4f1 into the recommended 2017 versions. Sounds like it should resolve our issues.

like image 78
Colin Cove Avatar answered Oct 19 '22 08:10

Colin Cove


Today for our project in Android Vitals for users on Android 8.0 and 8.1 began to display the same failure. We use Unity 2017.1.3 Maybe it does not depend on the version of Unity. I found some correlation of the occurrence of such a failure with the release of updates for Google Play Market.

UPDATE: We were able to reproduce this error on our Android 8.1 device:

  • Launch the application on the device.
  • Force Google Play Market to stop.
  • Try to purchase IAP in the store.
  • Watch the specified error report in Android Vitals

Given the peculiarity of this error to appear unexpectedly and massively, and then also unexpectedly disappear completely without making changes to the application, we concluded that the system service stops forcibly when the background of the Google Play Market is updated for users with auto-update enabled and connecting to the WiFi network during use our application and then try to access the data or conduct an operation with IAP in the Google Play store.