【发布时间】:2017-04-12 06:47:46
【问题描述】:
我正在使用 GoogleApiClient 使用他们的 Google 帐户登录用户。基本上,我使用 Firebase Auth 和 Google 登录。
但我每天都会在某些设备上遇到这种崩溃。当我在自己的一些设备(OnePlus 3、Nexus 5X、Moto G 等)上进行测试时,我从未见过这种崩溃。
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase(java.util.Locale)' on a null object reference
at com.google.android.gms.internal.zzamy.zzd(Unknown Source)
at com.google.android.gms.internal.zzamv.n(Unknown Source)
at com.google.android.gms.internal.zzamv.zza(Unknown Source)
at com.google.android.gms.internal.zzamv$2.run(Unknown Source)
at java.lang.Thread.run(Thread.java:818)
这就是我为实例化 GoogleApiClient 所做的事情。在正常情况下我看不到崩溃,但在某些设备中我看到了这种情况。这是我在代码中所做的,
String mClientId = parcel.getProviderExtra().getString(CLIENT_ID_KEY);
GoogleSignInOptions googleSignInOptions;
googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(mClientId)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(App.getContext())
.addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
.build();
mGoogleApiClient.connect();
我在这里做错了什么?我最好的选择是App.getContext(),它提供了应用程序上下文来实例化客户端。会不会是这个问题?
我可以使用活动上下文,但使用它会导致内存泄漏。这里有什么问题,如何解决?
这给一些刚打开应用程序并尝试唱歌的用户带来了非常糟糕的体验。
【问题讨论】:
-
你解决了吗?
-
您是否尝试过使用
getApplicationContext()方法代替App.getContext()?如果您使用.requestIdToken(getString(R.string.default_web_client_id)),是否也会发生这种情况? -
@AlexMamo 尝试
getApplicationContext没有运气 -
@GiruBhai,您的堆栈跟踪是否完全相同?您针对哪个版本的
com.google.android.gms进行编译? -
@SergGr 感谢回复,stacktrace 在stackoverflow.com/questions/43864774/… 并使用最新的
10.2.1
标签: android firebase firebase-authentication google-api-client google-api-java-client