Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App crash onActivityResult GoogleSignInApi #240

Open
hendrawd opened this issue Jun 21, 2016 · 109 comments
Open

App crash onActivityResult GoogleSignInApi #240

hendrawd opened this issue Jun 21, 2016 · 109 comments

Comments

@hendrawd
Copy link

hendrawd commented Jun 21, 2016

It is the library that i used:

compile 'com.google.android.gms:play-services-auth:9.0.0'

Here is the code for sign in

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);

And here the code onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        if (resultCode == RESULT_OK) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        } else {
            showSignInFailedMessage();
        }
    }
} 

Stack trace:

Fatal Exception: java.lang.RuntimeException: Unable to resume activity {com.myapp/com.myapp.activity.LoginActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65538, result=0, data=null} to activity {com.myapp/com.myapp.activity.LoginActivity}: java.lang.NullPointerException
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2583)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2611)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2097)
       at android.app.ActivityThread.access$600(ActivityThread.java:133)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4810)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65538, result=0, data=null} to activity {com.myapp/com.myapp.activity.LoginActivity}: java.lang.NullPointerException
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3149)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2570)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2611)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2097)
       at android.app.ActivityThread.access$600(ActivityThread.java:133)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4810)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by java.lang.NullPointerException
       at com.google.android.gms.internal.zznu.onCreate(Unknown Source)
       at com.google.android.gms.internal.zzpc.zza(Unknown Source)
       at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:176)
       at com.myapp.activity.BaseActivity.onActivityResult(BaseActivity.java:40)
       at com.myapp.activity.LoginActivity.onActivityResult(LoginActivity.java:165)
       at android.app.Activity.dispatchActivityResult(Activity.java:5192)
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3145)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2570)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2611)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2097)
       at android.app.ActivityThread.access$600(ActivityThread.java:133)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4810)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)

screen shot 2016-06-21 at 3 01 06 pm

@hmedat
Copy link

hmedat commented Jul 13, 2016

+1

1 similar comment
@idanakav
Copy link

+1

@samtstern
Copy link
Contributor

Can anyone reliably reproduce this bug? I would be happy to investigate further if there is a way to make it happen, but right now I don't have much to go on.

@phantuanphong
Copy link

Similar me

@hendrawd
Copy link
Author

@samtstern I got the error from Crashlytics dashboard, and it is from my users. I don't know how to reproduce the bug reliably :(

@manthan5493
Copy link

I got same issue on Xiaomi Mi 3w os is 6.0.1 but i got issue because i didnt check
resultCode == RESULT_OK

@hendrawd
Copy link
Author

hendrawd commented Aug 29, 2016

@manthan5493 It still happens too even we check for RESULT_OK. This is the code snippet from my onActivityResult

if (requestCode == RC_SIGN_IN) {
    if (resultCode == RESULT_OK) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        handleSignInResult(result);
    } else {
        CustomLogger.showLog(this, "Result from on activity result is not ok " + resultCode);
        showSignInFailedMessage();
    }
}

@indraazimi
Copy link

I got same issue too from my users:
Android 5.0 on Xiaomi Mi 4i (ferrari)
Android 5.1 on Xiaomi Mi 4c (libra)

Library that I used:
compile 'com.google.android.gms:play-services-auth:9.0.2'

Any solutions?

@samtstern
Copy link
Contributor

@indraazimi @manthan5493 this seems to be isolated to Xiaomi devices (I don't think it's a coincidence). Does either of you know if there are any particular modifications common to those devices? Are those users in China? I don't have any Xiaomi devices handy.

@olx-gaurav-mishra
Copy link

It happens in samsung devices as well

@samtstern
Copy link
Contributor

@olx-gaurav-mishra are you able to reproduce this? If so that would be extremely helpful, we need to capture some additional logs.

As for the Xiaomi devices, it appears to me after some research that Xiaomi devices don't support Google Play Services natively and Play Services must be side loaded. If that's the case, I would not be surprised to see this and other strange failures happening.

@olx-gaurav-mishra
Copy link

Well its not reproducible directly....you can only find crashes on crashlytics.....:-(

@jrgonzalezg
Copy link

This deliverResults flavor of issues (many very similar but slightly different crashes) is by far the main reason for crashes on our apps in Crashlytics. It seems to be related to old versions of the Google Play Services on the user's devices. It happens a lot every time we update the Google Play Services dependency and it gradually reduces over time. It is probably also related to using GoogleApiClient::enableAutoManage() and it indeed occurs on many devices not just Xiaomi. It also does not depend on the user's location since we are seeing it a lot for users currently in Spain. Additionally, this kind of crashes did not occur some months ago, but i am not sure if it only affects newer Google Play Services versions or if it started to occur due to switching from manual handling to the enableAutoManage() calls.

@imidhuntv
Copy link

+1

@imidhuntv
Copy link

imidhuntv commented Sep 26, 2016

Some of my users are also experiencing the same issue. For my users it happens for Xaiomi devices.
Mi 4i (Android version 5.0.2) - 57%
Redmi Note 3 (Android version 5.1.1) - 29%
MI MAX (Android version 6.0.1) - 14 %
Any fix?

@samtstern
Copy link
Contributor

@imidhuntv thanks for the additional reports. Since Xiaomi devices do not natively support Google Play Services I don't believe there's anything we can do for those users. It's hard to know what version of Play Services they are running and if they got the APK from a trusted source.

If anyone can reproduce this on a non-Xiaomi device that would be hugely valuable to investigating.

@olx-gaurav-mishra
Copy link

I removed enable auto manage and the crashes have reduced a lot...now it is crashing very less

@jrgonzalezg
Copy link

jrgonzalezg commented Sep 29, 2016

@olx-gaurav-mishra Thanks for confirming that!

With respect to the affected devices, just by looking at a few of the crashes related to this i see at least several Samsung, LG and Huawei devices, although few of them seem to be the latest devices from these manufacturers. Still some of them are popular devices like the S6, and there are surely more devices on the remaining issues i have in Crashlytics since they are so many due to small differences like line number offsets on the platform classes through the Android versions.

It seems to me that it may be possible to at least stop sending those "results" mentioned in the crashes if they are being sent by the auto manage features of Google Play services, by doing some null checks before sending them.

@samtstern
Copy link
Contributor

@olx-gaurav-mishra that's very interesting. I will mention that to the team as well, see if that gives them any hint as to where to look.

Also would you mind sharing the code of the Activity you were using with enableAutoManage?

@KushGoyal
Copy link

KushGoyal commented Oct 11, 2016

@olx-gaurav-mishra how do you implement signin without enableAutoManage?

@paisrikanth
Copy link

+1
I see the same crash logs on my crashlytics.. the device is Samsung

@olx-gaurav-mishra
Copy link

@KushGoyal u need to remove enableautomanage line from code and start using lifecycle callbacks for activity/fragment to connect disconnect GoogleApiclient. Refer to https://developers.google.com/identity/sign-in/android/sign-in
the highlighted blue section.
I did it by connecting GoogleAPIClient in onStart and disconnecting in onStop

@samtstern
Copy link
Contributor

Can anyone in this thread make this happen on a device they own and capture a bugreport after? The Google Sign In team (and the GoogleApiClient authors) are trying to debug this but can't get everything from the stack trace.

@jrgonzalezg
Copy link

jrgonzalezg commented Oct 19, 2016

I can not reproduce it directly but i have observed a few more things that may help.

Firstly, it is not specific to the sign-in apis. I have an app that only uses the app invite and the location apis (but not sign-in) and it happens there too.

Secondly, some of the related crashes can be catched by surrounding the call to super.onActivityResult(requestCode, resultCode, data) with a try-catch. If i report the issues occurring there as non-fatals i get slighty different stack traces like this (i have renamed the line mentioning my actual activity and source file to not reference the affected apps):

Non-fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.android.gms.common.ConnectionResult.c()' on a null object reference
       at com.google.android.gms.internal.zzqd.onCreate(Unknown Source)
       at com.google.android.gms.internal.zzrn.onActivityResult(Unknown Source)
       at android.support.v4.app.FragmentActivity.onActivityResult(SourceFile:165)
       at MyActivity.onActivityResult(SourceFile:Line)
       at android.app.Activity.dispatchActivityResult(Activity.java:6320)
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3836)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3223)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3268)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2517)
       at android.app.ActivityThread.access$1200(ActivityThread.java:165)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5593)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

No other code from my activity is executed when this second flavor of exceptions occurs besides calling super.onActivityResult().

Finally, i have a feeling that this crashes are not repeating continuously because users very rarely complain about crashes on the app ratings. It may be that it only occurs the first time the Google Play Services check is performed or that it occurs on a background thread and it is not noticeable. But i definitely would expect more users complaining and it is not the case. Do the other developers here also have the same experience with this?

Hope any of this helps to narrow the issues a bit!

@samtstern
Copy link
Contributor

@jrgonzalezg that's super helpful, thanks for all of that. Will pass it on.

@aaronj1335
Copy link

@jrgonzalezg yes thank you very much!

What version of the play-services dependencies are you using?

@jrgonzalezg
Copy link

Great!, i am glad that's useful since it would be very good to see this fixed.

About the version, that stack trace is quite recent so it was using play-services 9.6.1 but it also happened on several previous versions. Also, not all of the errors can be catched there, some of them lead to stack traces more similar to the one posted by @hendrawd that do not go through any of the app code.

@jrgonzalezg
Copy link

jrgonzalezg commented Oct 19, 2016

Another one with play services 9.4.0:

Non-fatal Exception: java.lang.NullPointerException
       at com.google.android.gms.internal.zzpn.onCreate(Unknown Source)
       at com.google.android.gms.internal.zzqv.onActivityResult(Unknown Source)
       at android.support.v4.app.FragmentActivity.onActivityResult(SourceFile:165)
       at MyActivity.onActivityResult(SourceFile:Line)
       at android.app.Activity.dispatchActivityResult(Activity.java:5423)
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3518)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2870)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2912)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2334)
       at android.app.ActivityThread.access$800(ActivityThread.java:145)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
       at android.os.Handler.dispatchMessage(Handler.java:102)

And a sample of one of the not catchable exceptions (play services 9.6.1):

Fatal Exception: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {MY_APPLICATION_ID/com.google.android.gms.common.api.GoogleApiActivity}: java.lang.NullPointerException
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3162)
       at android.app.ActivityThread.handleSendResult(ActivityThread.java:3205)
       at android.app.ActivityThread.access$1100(ActivityThread.java:138)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:213)
       at android.app.ActivityThread.main(ActivityThread.java:4787)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by java.lang.NullPointerException
       at com.google.android.gms.common.api.GoogleApiActivity.zza(Unknown Source)
       at com.google.android.gms.common.api.GoogleApiActivity.onActivityResult(Unknown Source)
       at android.app.Activity.dispatchActivityResult(Activity.java:5192)
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3158)
       at android.app.ActivityThread.handleSendResult(ActivityThread.java:3205)
       at android.app.ActivityThread.access$1100(ActivityThread.java:138)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:213)
       at android.app.ActivityThread.main(ActivityThread.java:4787)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)

@wingjay
Copy link

wingjay commented Oct 21, 2016

So do we have a way to prevent crash in play service 9.4.0? Thank you.

Fatal Exception: java.lang.RuntimeException: Unable to resume activity {com.glow.android.eve/com.glow.android.eve.ui.landing.WelcomeActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65538, result=0, data=null} to activity {com.glow.android.eve/com.glow.android.eve.ui.landing.WelcomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.android.gms.common.ConnectionResult.c()' on a null object reference
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3083)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3114)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2445)
       at android.app.ActivityThread.access$800(ActivityThread.java:162)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1348)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5422)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)
Caused by java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65538, result=0, data=null} to activity {com.glow.android.eve/com.glow.android.eve.ui.landing.WelcomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.android.gms.common.ConnectionResult.c()' on a null object reference
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3688)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3069)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3114)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2445)
       at android.app.ActivityThread.access$800(ActivityThread.java:162)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1348)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5422)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.android.gms.common.ConnectionResult.c()' on a null object reference
       at com.google.android.gms.internal.zzpn.onCreate(Unknown Source)
       at com.google.android.gms.internal.zzqv.zza(Unknown Source)
       at android.support.v4.app.FragmentActivity.onActivityResult(SourceFile:175)
       at com.glow.android.trion.base.BaseActivity.onActivityResult(SourceFile:231)
       at com.glow.android.eve.ui.landing.WelcomeActivity.onActivityResult(SourceFile:286)
       at android.app.Activity.dispatchActivityResult(Activity.java:6259)
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3684)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3069)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3114)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2445)
       at android.app.ActivityThread.access$800(ActivityThread.java:162)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1348)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5422)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)

@KE7JLM
Copy link

KE7JLM commented Oct 21, 2016

Its happening constantly on our S4, Note 5 and Nexus 6. All running 9.8.77

Strangely, one S4 works while the other does not, both are identical.

10-21 13:48:47.551 13245-13245/com.gox.smartrun E/UncaughtException: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=9001, result=-1, data=Intent { (has extras) }} to activity {com.gox.smartrun/com.gox.smartrun.login.LoginActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:4053)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference
at com.gox.smartrun.login.LoginActivity.handleSignInResult(LoginActivity.java:161)
at com.gox.smartrun.login.LoginActivity.onActivityResult(LoginActivity.java:139)
at android.app.Activity.dispatchActivityResult(Activity.java:6917)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4049)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096) 
at android.app.ActivityThread.-wrap20(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6077) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

@isaisachen
Copy link

@cargo8 Thanks. We don't use singleInstance mode and KK is our supported api level and is tested for each release. Will take a look at your case once I receive the email.

@arisembekss
Copy link

I'm using
compile 'com.google.android.gms:play-services-auth:10.0.1'

and i found this crash below from xiaomi devices (just xiaomi). i've been test in Sony, LG, Lenovo and exactly no problem, here the crash report
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dtech.smartpulsa/com.google.android.gms.auth.api.signin.internal.SignInHubActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: ,佅�$�������openid����������I1003648665919-1dcuht955rmlsg1cnccpfboi2kes37ot.apps.googleusercont
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5441)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: ,佅�$�������openid����������I1003648665919-1dcuht955rmlsg1cnccpfboi2kes37ot.apps.googleusercont
at android.os.Parcel.readException(Parcel.java:1622)
at android.os.Parcel.readException(Parcel.java:1573)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2660)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1509)
at android.app.Activity.startActivityForResult(Activity.java:3978)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:77)
at android.app.Activity.startActivityForResult(Activity.java:3939)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)
at com.google.android.gms.auth.api.signin.internal.SignInHubActivity.zzj(Unknown Source)
at com.google.android.gms.auth.api.signin.internal.SignInHubActivity.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:6303)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)

that crash come when Google Sign In button have been clicked, no account chooser fragment to show but that crash.

here's my onCreate()
protected void onCreate(Bundle savedInstanceState) {
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
prefManager = new PrefManager(this);
setContentView(R.layout.activity_welcome);

    /*initialize google sign in*/
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build();


    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(WelcomeActivity.this, WelcomeActivity.this)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

}

here's when Google Sign In button clicked:
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}

@null1099
Copy link

Getting similar crash in my App:

Fatal Exception: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=131074, result=0, data=null} to activity {xyz.view.activities.MainActivity}: java.lang.NullPointerException
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3566)
       at android.app.ActivityThread.handleSendResult(ActivityThread.java:3609)
       at android.app.ActivityThread.access$1300(ActivityThread.java:151)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1382)
       at android.os.Handler.dispatchMessage(Handler.java:110)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:5312)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by java.lang.NullPointerException
       at com.google.android.gms.internal.zzzw.onActivityResult(Unknown Source)
       at com.google.android.gms.internal.zzabm.onActivityResult(Unknown Source)
       at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:164)
       at android.app.Activity.dispatchActivityResult(Activity.java:5521)
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3562)
       at android.app.ActivityThread.handleSendResult(ActivityThread.java:3609)
       at android.app.ActivityThread.access$1300(ActivityThread.java:151)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1382)
       at android.os.Handler.dispatchMessage(Handler.java:110)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:5312)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
       at dalvik.system.NativeStart.main(NativeStart.java)

First crash occurred on WayteQ x995 with Android 4.4.2.

I'm using

compile 'com.google.android.gms:play-services-location:10.0.1'
compile 'com.google.firebase:firebase-invites:10.0.1'

Google API Client init in v7.app.AppCompatActivity:

mGoogleApiClient = new GoogleApiClient.Builder(this)
                    .enableAutoManage(this /* FragmentActivity */,
                            this /* OnConnectionFailedListener */)
                    .addConnectionCallbacks(this)
                    .addApi(LocationServices.API)
                    .addApi(AppInvite.API)
                    .build();

I'm just doing some logging in the ConnectionCallback Error handler and getting last Location and AppInvitation referral in onConnected.

Obviously, the NPE in
com.google.android.gms.internal.zzzw.onActivityResult(Unknown Source) is not fixed in 10.0.1.

@neobie
Copy link

neobie commented Feb 16, 2017

Hi. I am having such trouble too . Getting crashes from 100% Xiaomi Phones.

Fatal Exception: java.lang.RuntimeException
Failure delivering result ResultInfo{who=null, request=9001, result=0, data=null} to activity java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.auth.api.signin.b.c()' on a null object reference

This line could have return NULL result.
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

Check on fabric crash stats on last 90 days..
http://imgh.us/Screen_Shot_2017-02-16_at_8.35.36_PM.png

@ricknout
Copy link

Are any of these issues potentially fixed in the 10.2.0 play services release?

@aaronj1335
Copy link

@nicholasrout unfortunately not that I know of. The next release that I know of with potential fixes is scheduled for April timeframe.

@ricknout
Copy link

Alright, thanks for the heads up @aaronj1335

@DigitApps2
Copy link

Reproduced on Glaxy S4 Mini - delete account from the phone settings - add existing account during the signin process - crash only first time. Userpic is null and DisplayName also. Sometimes DisplayName == email.

@1ka
Copy link

1ka commented Mar 10, 2017

I also get the null Intent data onActivityResult() during Sign In.

Device Intex Aqua 4G Strong used by a customer in India
Play services 10.2.0

Below is a badly formatted stack trace :-/

`Exception java.lang.RuntimeException: Unable to resume activity {com.softwyer.collections.storage/com.softwyer.collections.core.SignInActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65538, result=0, data=null} to activity {com.softwyer.collections.storage/com.softwyer.collections.core.SignInActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.android.gms.common.ConnectionResult.c()' on a null object reference
android.app.ActivityThread.performResumeActivity (ActivityThread.java:3245)
android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3276)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2619)
android.app.ActivityThread.access$800 (ActivityThread.java:178)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1470)
android.os.Handler.dispatchMessage (Handler.java:111)
android.os.Looper.loop (Looper.java:194)
android.app.ActivityThread.main (ActivityThread.java:5643)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:960)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:755)

Caused by java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65538, result=0, data=null} to activity {com.softwyer.collections.storage/com.softwyer.collections.core.SignInActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.android.gms.common.ConnectionResult.c()' on a null object reference
android.app.ActivityThread.deliverResults (ActivityThread.java:3845)
android.app.ActivityThread.performResumeActivity (ActivityThread.java:3227)
android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3276)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2619)
android.app.ActivityThread.access$800 (ActivityThread.java:178)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1470)
android.os.Handler.dispatchMessage (Handler.java:111)
android.os.Looper.loop (Looper.java:194)
android.app.ActivityThread.main (ActivityThread.java:5643)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:960)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:755)

Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.android.gms.common.ConnectionResult.c()' on a null object reference
com.google.android.gms.internal.zzaae.onCreate (zzaae.java)
.onStart (zzaae.java)
.onActivityResult (zzaae.java)
.zza (zzaae.java)
.zza (zzaae.java)
com.google.android.gms.internal.zzabu.onActivityResult (zzabu.java)
android.support.v4.app.FragmentActivity.onActivityResult (FragmentActivity.java:164)
com.softwyer.collections.core.SignInActivity.onActivityResult (SignInActivity.java:155)
android.app.Activity.dispatchActivityResult (Activity.java:6302)
android.app.ActivityThread.deliverResults (ActivityThread.java:3841)
android.app.ActivityThread.performResumeActivity (ActivityThread.java:3227)
android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3276)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2619)
android.app.ActivityThread.access$800 (ActivityThread.java:178)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1470)
android.os.Handler.dispatchMessage (Handler.java:111)
android.os.Looper.loop (Looper.java:194)
android.app.ActivityThread.main (ActivityThread.java:5643)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:960)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:755)`

@Ggdroid
Copy link

Ggdroid commented Apr 13, 2017

Even i got the crash on HTC device -
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65538, result=0, data=null} to activity {com.cube26.osp.news/com.cube26.osp.news.ui.activities.LoginActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.android.gms.common.ConnectionResult.getErrorCode()' on a null object reference
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at android.app.ActivityThread.deliverResults(ActivityThread.java:4013)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at android.app.ActivityThread.handleSendResult(ActivityThread.java:4063)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at android.app.ActivityThread.access$1400(ActivityThread.java:150)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at android.os.Looper.loop(Looper.java:168)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5885)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.android.gms.common.ConnectionResult.getErrorCode()' on a null object reference
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at com.google.android.gms.internal.zzzw.onActivityResult(Unknown Source)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at com.google.android.gms.internal.zzabm.onActivityResult(Unknown Source)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:164)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at com.cube26.osp.news.ui.activities.LoginActivity.onActivityResult(LoginActivity.java:250)
04-13 16:08:17.877 17953 17953 E AndroidRuntime: at android.app.Activity.dispatchActivityResult(Activity.java:6467)
GooglePlayServicesUtil: Google Play services out of date. Requires 10084000 but found 8492430

I have a device in which it happens everytime if i run monkey script. I am not able to reproduce it manually, but i have noted few things. The play services is not updated and the device is not logged in with any gmail account.

@isaisachen
Copy link

@arisembekss Your issue is different, please discuss in:
playgameservices/android-basic-samples#207

@RealDigitApps User name / picture all both nullable properties. You should do null check in your code.

Rest of the folks having mostly Xiaomi in Crash reports, could you try 11.0.0 SDK? Thanks.

@serhii-pokrovskyi
Copy link

serhii-pokrovskyi commented Jul 1, 2017

oh my... so many of you here
using com.google.android.gms:play-services-auth:11.0.2
my onActivityResult

if (requestCode == RC_SIGN_IN && resultCode == Activity.RESULT_OK) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount googleSignInAccount = result.getSignInAccount();
// if something goes wrong
if (googleSignInAccount != null){
handleSignInResult(result);
} else {
Toast.makeText(context, R.string.google_fatal_error_message, Toast.LENGTH_LONG).show();
}
}

and still, i even check if it's not null, but still, getting this

Attempt to invoke virtual method 'boolean com.google.android.gms.auth.api.signin.b.c()' on a null object reference

@akazhuo
Copy link

akazhuo commented Aug 6, 2017

My device is Xiaomi Redmi 2, I had install google-play-store and google-services

using com.google.android.gms:play-services-auth:11.0.4

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.common.ConnectionResult.isSuccess()' on a null object reference at com.google.android.gms.common.internal.zzm.zzf(Unknown Source) at com.google.android.gms.common.internal.zzo.zzrj(Unknown Source) at com.google.android.gms.common.internal.zze.zzs(Unknown Source) at com.google.android.gms.common.internal.zzi.zzrk(Unknown Source) at com.google.android.gms.common.internal.zzh.handleMessage(Unknown Source) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5290) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)

Is my device reason???

@ankitk93
Copy link

Hi all,
I am having the issue of NullPointerException as a crashlytics bug report for mostly Samsung Galaxy devices. What i am using is

compile 'com.google.android.gms:play-services-maps:11.0.1'
compile 'com.google.firebase:firebase-auth:11.0.1'
compile 'com.google.firebase:firebase-database:11.0.1'

and the following is the bug report from crashlytics that i have got :

Fatal Exception: java.lang.NullPointerException
at com.google.android.gms.internal.xv.zzJr(Unknown Source)
at com.google.android.gms.internal.xv.zza(Unknown Source)
at com.google.android.gms.internal.xx.run(Unknown Source)
at java.lang.Thread.run(Thread.java:841)

slkdnc

any views what could be the possible reason for this crash ?

@banerjeedeba
Copy link

i am using
implementation 'com.google.firebase:firebase-auth:11.8.0'
implementation 'com.google.firebase:firebase-messaging:11.8.0'
implementation 'com.firebase:firebase-jobdispatcher:0.6.0'
implementation 'com.google.android.gms:play-services-auth:11.8.0'

google sign in working fine when i am testing in an emulator with api 24 but its crashing when i am testing in an emulator with api 23.

I have also tested in two Moto X pure one having api 23 and another having api 24 same issue is replicated. I cant find any system generated issue issue in logcat .

From the logs thats getting printed from the application i can see onActivityResult method is not getting called after we call the startActivityForResult(signInIntent, RC_SIGN_IN);

public void signIn(View v) { Log.d(TAG, "signIn"); Intent signInIntent = mGoogleSignInClient.getSignInIntent(); Log.d(TAG, "signIn Intent"+(signInIntent!=null)); startActivityForResult(signInIntent, RC_SIGN_IN); Log.d(TAG, "signIn startActivityForResult"); }

@hendrawd
Copy link
Author

hendrawd commented Jan 2, 2018

@banerjeedeba Aren't you should put googleApiClient inside mGoogleSignInClient.getSignInIntent(); ?

@banerjeedeba
Copy link

@hendrawd I am using GoogleSignInClient's getSignInIntent method it don't have any parameter.

I think u hare talking about Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)

@isaisachen
Copy link

@banerjeedeba If you can consistently repo the crash, would you mind sending the complete bug report to @samtstern? (his email address is listed on his profile). Thanks.

@banerjeedeba
Copy link

Sure, I have mailed him the logs.

@isaisachen
Copy link

isaisachen commented Jan 3, 2018

@banerjeedeba I looked at your bug report, nothing suspicious / crashed with Google sign-in code, but seems your process was stopped before Google sign-in has a chance to finish.

01-01 16:08:34.335 1984 3261 I ActivityManager: START u0 {act=com.google.android.gms.auth.GOOGLE_SIGN_IN pkg="your package" cmp="your package"/com.google.android.gms.auth.api.signin.internal.SignInHubActivity (has extras)} from uid 10065 on display 0
...
01-01 16:08:34.361 1984 3260 I ActivityManager: START u0 {act=com.google.android.gms.auth.GOOGLE_SIGN_IN pkg=com.google.android.gms cmp=com.google.android.gms/.auth.api.signin.ui.SignInActivity (has extras)} from uid 10065 on display 0
...
"exception stack"
01-01 16:17:37.810 1984 2000 E KernelUidCpuTimeReader: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)

01-01 16:21:06.085 1984 1995 I ActivityManager: Force stopping "your package" appid=10065 user=0: from pid 5722

I am suspecting some other code in your app tries to do some disk I/O and you don't have android.permission.READ_EXTERNAL_STORAGE permission? Totally random guess, but doesn't seem to be related to Google Sign-In.

@banerjeedeba
Copy link

banerjeedeba commented Jan 3, 2018 via email

@samtstern
Copy link
Contributor

@banerjeedeba the disparity between a real device and the emulator still does not mean that the problem is in Google code rather than your own. Without a bug report showing clearly a crash in google code (or a crash at all) there's not much we can investigate. Diffing two non-crashing bugreports is unlikely to yield results.

@isaisachen
Copy link

@banerjeedeba As I mentioned, log indicated Google Sign-In functionality was working as expected, but your app is suddenly terminated by some other error triggered by uid_cputime reading and that's NOT something triggered by Google Sign-In. So like @samtstern mentioned, sorry that we are unable to help further here. One last thing you can try to help prove our theory is, run Google Sign-In sample in this repository on the identical emulator / physical device that you could repro the issue.

@Merlinkoss
Copy link

If i use it:
mGoogleSignInClient = GoogleSignIn.getClient(activity, gso);
from official docs
i have only 1-2 crash on android 4.4
Have same prolem?

@bineeshbabu
Copy link

bineeshbabu commented Mar 15, 2018

make sure your activity doesn't contain "noHistory=true" @Merlinkoss

@iamkdblue
Copy link

In my case i forget to add .requestIdToken("Web application client id") in GoogleSignInOptions object .
so finally solved !
ex:-

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken("Web application client id")
                .requestEmail()
                .build();

i hope it's help you guys !

@pk4393
Copy link

pk4393 commented Aug 16, 2018

I am also facing the similar kind of issue only for one device Galaxy Tab3 Lite 7.0, OS version 5.0.2

Fatal Exception: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=40962, result=-1, data=Intent { (has extras) }} to activity {example.mobile.demo/com.google.android.gms.auth.api.signin.internal.SignInHubActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:3949)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3992)
at android.app.ActivityThread.access$1400(ActivityThread.java:168)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1442)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5753)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)

is there any solution for this issue?

@iamkdblue
Copy link

iamkdblue commented Aug 16, 2018

@pk4393 have you pass requestIdToken?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests