MrStahlfelge / gdx-gamesvcs

Easy integration of gameservices in your libGDX game: Google Play Games, Apple Game Center, Amazon GameCircle and more
Apache License 2.0
113 stars 20 forks source link

App Missing Runtime Dependencies #23

Closed kalexmills closed 6 years ago

kalexmills commented 6 years ago

I seem to be running into runtime errors when attempting to integrate this library. The below exception is thrown when I startup my app on my Galaxy S6, and I receive no other information.

05-04 17:20:26.101 6291-6291/com.niftysoft.tweeter E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.niftysoft.tweeter, PID: 6291
    java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.
        at com.google.android.gms.common.internal.zzj$zza.zzc(Unknown Source)
        at com.google.android.gms.common.internal.zzj$zza.zzw(Unknown Source)
        at com.google.android.gms.common.internal.zzj$zzc.zzqN(Unknown Source)
        at com.google.android.gms.common.internal.zzj$zzb.handleMessage(Unknown Source)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

People on the interwebs say this is an issue with missing dependencies... I know you haven't updated past Google Play 8.4.0... could this be the root cause? How would I include the missing libs along with my apk?

But I've checked and the example app doesn't seem to require that any additional dependencies are configured in gradle.build. I've tried adding some of the Google Play Services dependencies as described here anyway, but they do not resolve the issue.

Also ,this only happens on actual devices, everything seems to work fine on the emulator.

EDIT: Below are full logs:

05-04 17:33:31.172 3677-7895/? V/InputMethodManagerService: windowGainedFocus: reason=WINDOW_FOCUS_GAIN client=android.os.BinderProxy@e9a171c inputContext=com.android.internal.view.IInputContext$Stub$Proxy@c80a823 missingMethods= attribute=android.view.inputmethod.EditorInfo@4147120 nm = com.niftysoft.tweeter controlFlags=#105 softInputMode=#120 windowFlags=#1810500
    Unspecified window will hide input
05-04 17:33:31.208 4145-4145/? D/SwipeDoorsillDetector: reset()com.android.systemui.statusbar.phone.NotificationPanelView.resetViews:864 com.android.systemui.statusbar.phone.PanelBar.collapsePanel:173 com.android.systemui.statusbar.phone.PhoneStatusBar.setWindowState:4347 com.android.systemui.statusbar.CommandQueue$H.handleMessage:678 
05-04 17:33:31.254 11186-11186/com.niftysoft.tweeter E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.niftysoft.tweeter, PID: 11186
    java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.
        at com.google.android.gms.common.internal.zzj$zza.zzc(Unknown Source)
        at com.google.android.gms.common.internal.zzj$zza.zzw(Unknown Source)
        at com.google.android.gms.common.internal.zzj$zzc.zzqN(Unknown Source)
        at com.google.android.gms.common.internal.zzj$zzb.handleMessage(Unknown Source)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
05-04 17:33:31.265 3677-4855/? D/ActivityManager: setFocusStackUnchecked: reason=finishActivity adjustFocus setFocusedActivity focusCandidate=ActivityStack{8ad9423d0 stackId=0, 1 tasks} caller=com.android.server.am.ActivityStack.moveToFront:877 com.android.server.am.ActivityStackSupervisor.moveActivityStackToFront:2006 
05-04 17:33:31.358 3677-3702/? I/WindowManager_SurfaceController: Destroying surface Surface(name=Starting com.niftysoft.tweeter) called by com.android.server.wm.WindowStateAnimator.destroySurface:2907 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:1120 com.android.server.wm.WindowState.removeLocked:1867 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2934 com.android.server.wm.AppWindowToken.destroySurfaces:427 com.android.server.wm.AppWindowToken.destroySurfaces:388 com.android.server.wm.WindowStateAnimator.finishExit:686 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:570 
05-04 17:33:35.126 3677-4985/? D/ApplicationPolicy: isStatusBarNotificationAllowedAsUser: packageName = com.android.systemui,userId = -1
05-04 17:33:42.307 3677-3694/? I/WindowManager_SurfaceController: Destroying surface Surface(name=SurfaceView - com.niftysoft.tweeter/com.niftysoft.tweeter.AndroidLauncher) called by com.android.server.wm.WindowStateAnimator.destroySurface:2907 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:1120 com.android.server.wm.WindowState.removeLocked:1867 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2934 com.android.server.wm.WindowManagerService.removeWindowLocked:2879 com.android.server.wm.WindowManagerService.removeWindowLocked:2689 com.android.server.wm.AppWindowToken.removeAllWindows:608 com.android.server.wm.AppWindowToken.removeAppFromTaskLocked:370 
05-04 17:33:42.330 3677-3694/? I/WindowManager_SurfaceController: Destroying surface Surface(name=com.niftysoft.tweeter/com.niftysoft.tweeter.AndroidLauncher) called by com.android.server.wm.WindowStateAnimator.destroySurface:2907 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:1120 com.android.server.wm.WindowState.removeLocked:1867 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2934 com.android.server.wm.WindowManagerService.removeWindowLocked:2879 com.android.server.wm.WindowManagerService.removeWindowLocked:2689 com.android.server.wm.AppWindowToken.removeAllWindows:608 com.android.server.wm.AppWindowToken.removeAppFromTaskLocked:370 
05-04 17:33:45.628 3677-3702/? I/WindowManager_SurfaceController: Destroying surface Surface(name=Application Error: com.niftysoft.tweeter) called by com.android.server.wm.WindowStateAnimator.destroySurface:2907 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:1120 com.android.server.wm.WindowState.destroyOrSaveSurface:2705 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementInner:503 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop:278 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement:226 com.android.server.wm.WindowManagerService$H.handleMessage:9324 android.os.Handler.dispatchMessage:102 
05-04 17:33:50.318 3677-3985/? E/WifiWatchdogStateMachine: Unhandled message { when=-1ms what=135229 target=com.android.internal.util.StateMachine$SmHandler } in state ValidNonSwitchableState
05-04 17:33:54.969 11358-11358/? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
05-04 17:33:55.296 11358-11358/? D/AndroidRuntime: Calling main entry com.android.commands.pm.Pm
05-04 17:33:55.318 3677-3985/? E/WifiWatchdogStateMachine: Unhandled message { when=-1ms what=135238 target=com.android.internal.util.StateMachine$SmHandler } in state ValidNonSwitchableState
05-04 17:33:56.274 11402-11402/? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
05-04 17:33:56.507 11402-11402/? D/AndroidRuntime: Calling main entry com.android.commands.pm.Pm
05-04 17:33:56.512 11402-11410/? W/MessageQueue: Handler (android.os.Handler) {e2546a6} sending message to a Handler on a dead thread
    java.lang.IllegalStateException: Handler (android.os.Handler) {e2546a6} sending message to a Handler on a dead thread
        at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
        at android.os.Handler.enqueueMessage(Handler.java:643)
        at android.os.Handler.sendMessageAtTime(Handler.java:612)
        at android.os.Handler.sendMessageDelayed(Handler.java:582)
        at android.os.Handler.post(Handler.java:338)
        at android.os.ResultReceiver$MyResultReceiver.send(ResultReceiver.java:57)
        at com.android.internal.os.IResultReceiver$Stub.onTransact(IResultReceiver.java:58)
        at android.os.Binder.execTransact(Binder.java:573)
05-04 17:33:59.492 11414-11414/? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
05-04 17:33:59.495 11416-11416/? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
05-04 17:33:59.779 11416-11416/? D/AndroidRuntime: Calling main entry com.android.commands.am.Am
05-04 17:33:59.780 11414-11414/? D/AndroidRuntime: Calling main entry com.android.commands.wm.Wm
05-04 17:34:00.551 11437-11437/? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
05-04 17:34:00.820 11437-11437/? D/AndroidRuntime: Calling main entry com.android.commands.am.Am
05-04 17:34:00.848 3677-3745/? D/ActivityManager: moveToFront() : reason=startedActivity setFocusedActivity isAttached=true TaskRecord{2bdf141d0 #15791 A=com.niftysoft.tweeter U=0 StackId=1 sz=1}
    setFocusStackUnchecked: reason=startedActivity setFocusedActivity focusCandidate=ActivityStack{8a6ba6ed0 stackId=1, 4 tasks} caller=com.android.server.am.ActivityStack.moveToFront:877 com.android.server.am.ActivityStackSupervisor.moveActivityStackToFront:2006 
05-04 17:34:00.975 3677-29269/? I/WindowManager_SurfaceController: Destroying surface Surface(name=com.teslacoilsw.launcher/com.teslacoilsw.launcher.NovaLauncher) called by com.android.server.wm.WindowStateAnimator.destroySurface:2907 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:1120 com.android.server.wm.WindowState.destroyOrSaveSurface:2705 com.android.server.wm.WindowManagerService.tryStartExitingAnimation:3577 com.android.server.wm.WindowManagerService.relayoutWindow:3433 com.android.server.wm.Session.relayout:240 android.view.IWindowSession$Stub.onTransact:288 com.android.server.wm.Session.onTransact:161 
05-04 17:34:01.844 3677-4031/? V/InputMethodManagerService: windowGainedFocus: reason=WINDOW_FOCUS_GAIN client=android.os.BinderProxy@c44acb1 inputContext=com.android.internal.view.IInputContext$Stub$Proxy@1ab967a missingMethods= attribute=android.view.inputmethod.EditorInfo@a446e2b nm = com.niftysoft.tweeter controlFlags=#105 softInputMode=#120 windowFlags=#1810500
    Unspecified window will hide input
05-04 17:34:01.858 4145-4145/? D/SwipeDoorsillDetector: reset()com.android.systemui.statusbar.phone.NotificationPanelView.resetViews:864 com.android.systemui.statusbar.phone.PanelBar.collapsePanel:173 com.android.systemui.statusbar.phone.PhoneStatusBar.setWindowState:4347 com.android.systemui.statusbar.CommandQueue$H.handleMessage:678 
05-04 17:34:01.970 11450-11450/com.niftysoft.tweeter E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.niftysoft.tweeter, PID: 11450
    java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.
        at com.google.android.gms.common.internal.zzj$zza.zzc(Unknown Source)
        at com.google.android.gms.common.internal.zzj$zza.zzw(Unknown Source)
        at com.google.android.gms.common.internal.zzj$zzc.zzqN(Unknown Source)
        at com.google.android.gms.common.internal.zzj$zzb.handleMessage(Unknown Source)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
05-04 17:34:01.980 3677-3900/? D/ActivityManager: setFocusStackUnchecked: reason=finishActivity adjustFocus setFocusedActivity focusCandidate=ActivityStack{8ad9423d0 stackId=0, 1 tasks} caller=com.android.server.am.ActivityStack.moveToFront:877 com.android.server.am.ActivityStackSupervisor.moveActivityStackToFront:2006 
05-04 17:34:02.025 3677-3702/? I/WindowManager_SurfaceController: Destroying surface Surface(name=Starting com.niftysoft.tweeter) called by com.android.server.wm.WindowStateAnimator.destroySurface:2907 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:1120 com.android.server.wm.WindowState.removeLocked:1867 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2934 com.android.server.wm.AppWindowToken.destroySurfaces:427 com.android.server.wm.AppWindowToken.destroySurfaces:388 com.android.server.wm.WindowStateAnimator.finishExit:686 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:570 
05-04 17:34:04.213 3677-3842/? V/SamsungAlarmManager: Sending to uid : 1001 action=com.android.internal.telephony.data-stall alarm=Alarm{3b7b31d type 3 when 4916074 com.android.phone}
05-04 17:34:12.990 3677-3694/? I/WindowManager_SurfaceController: Destroying surface Surface(name=SurfaceView - com.niftysoft.tweeter/com.niftysoft.tweeter.AndroidLauncher) called by com.android.server.wm.WindowStateAnimator.destroySurface:2907 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:1120 com.android.server.wm.WindowState.removeLocked:1867 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2934 com.android.server.wm.WindowManagerService.removeWindowLocked:2879 com.android.server.wm.WindowManagerService.removeWindowLocked:2689 com.android.server.wm.AppWindowToken.removeAllWindows:608 com.android.server.wm.AppWindowToken.removeAppFromTaskLocked:370 
05-04 17:34:13.011 3677-3694/? I/WindowManager_SurfaceController: Destroying surface Surface(name=com.niftysoft.tweeter/com.niftysoft.tweeter.AndroidLauncher) called by com.android.server.wm.WindowStateAnimator.destroySurface:2907 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:1120 com.android.server.wm.WindowState.removeLocked:1867 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2934 com.android.server.wm.WindowManagerService.removeWindowLocked:2879 com.android.server.wm.WindowManagerService.removeWindowLocked:2689 com.android.server.wm.AppWindowToken.removeAllWindows:608 com.android.server.wm.AppWindowToken.removeAppFromTaskLocked:370 
05-04 17:34:16.641 3677-3985/? E/WifiWatchdogStateMachine: Unhandled message { when=0 what=135229 target=com.android.internal.util.StateMachine$SmHandler } in state ValidNonSwitchableState
05-04 17:34:21.642 3677-3985/? E/WifiWatchdogStateMachine: Unhandled message { when=-1ms what=135238 target=com.android.internal.util.StateMachine$SmHandler } in state ValidNonSwitchableState
kalexmills commented 6 years ago

I've also tried declaring transitive dependencies myself at the version required by the lib. This also does not work.

        compile group: 'com.android.support', name: 'appcompat-v7', version: '20.0.0'
        compile group: 'com.android.support', name: 'support-v4', version: '20.0.0'
        compile group: 'com.google.android.gms', name: 'play-services-games', version: '8.4.0'
        compile group: 'com.google.android.gms', name: 'play-services-plus', version: '8.4.0'
        compile "de.golfgl.gdxgamesvcs:gdx-gamesvcs-android-gpgs:$gamesvcsVersion"
MrStahlfelge commented 6 years ago

You don't need to use the exact version 8.4, play services up to v11.5 work. Me, I indeed use 8.4.0 in my projects. They have around 1,000 active installs (20 of this are Galaxy S6 according to the Play console) and no crashes the last 30 days, so I assume there is a problem with your project setup.

Does your emulator have installed Play services? If not, I just assume you forgot to set your app_id. This is causing an IllegalStateException. Did you try the sample app on your device?

kalexmills commented 6 years ago

To be clear, the emulator doesn't crash, even though Play services is not installed. It just redirects me to install play services. But on my S6 device, play services are installed, yet the app crashes whenever GpgsClient.connect() is called.

I also verified that I have two certs installed, one for release and one for debug.

I removed gsClient.resumeSession() calls from the create() and resume() methods and the app stays stable until I explicitly log in. So the crash is happening just after that call to GpgsClient.connect(). I removed the library overrides and this still occurs.

Then I get a much more helpful error message... that the APP_ID isn't specified correctly. So you were on the right track, good job... somehow I had an old package name set in the manifest... updating it to the correct package name resolves this error... but the app still crashes shortly after connect() is called.

kalexmills commented 6 years ago

So for a moment, I though this might have something to do with the Game Services being unpublished in the developer console, and so I published it... but that didn't make any difference and I am still seeing the crash.

kalexmills commented 6 years ago

I was able to resolve the issue....

Apparently the app_id metadata belongs inside the <application> tag. 🤦‍♂️

Thanks @MrStahlfelge for your quick / polite response. :-)

MrStahlfelge commented 6 years ago

I am glad it works now. :-)