FirebaseUI认证在安卓上崩溃了

4

我正在尝试使用新的FirebaseUI进行身份验证。在LogCat中,我得到以下错误:

07-01 22:33:17.170 715-789/com.gmail.rixx.justin.cashcaddy I/OpenGLRenderer: Initialized EGL, version 1.4
07-01 22:33:17.234 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zzf>
07-01 22:33:17.235 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zzf>
07-01 22:33:17.242 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zze$3>
07-01 22:33:17.242 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zze$3>
07-01 22:33:17.243 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zzf>
07-01 22:33:17.243 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zze$4>
07-01 22:33:17.243 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zze$4>
07-01 22:33:17.244 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zzf>
07-01 22:33:17.244 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zze$1>
07-01 22:33:17.245 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zze$1>
07-01 22:33:17.245 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zzf>
07-01 22:33:17.246 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zze$2>
07-01 22:33:17.246 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.credentials.internal.zze$2>
07-01 22:33:17.247 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.signin.internal.zzc$zza>
07-01 22:33:17.247 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.signin.internal.zzc$zza>
07-01 22:33:17.248 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.signin.internal.zzc$1>
07-01 22:33:17.248 715-715/com.gmail.rixx.justin.cashcaddy I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.signin.internal.zzc$1>
07-01 22:33:17.251 715-715/com.gmail.rixx.justin.cashcaddy D/AndroidRuntime: Shutting down VM
07-01 22:33:17.259 715-715/com.gmail.rixx.justin.cashcaddy E/UncaughtException: java.lang.NoSuchMethodError: No virtual method zztw()Ljava/util/Set; in class Lcom/google/android/gms/common/internal/zzg; or its super classes (declaration of 'com.google.android.gms.common.internal.zzg' appears in /data/app/com.gmail.rixx.justin.cashcaddy-2/base.apk)
                                                                                at com.google.android.gms.auth.api.signin.internal.zzd.<init>(Unknown Source)
                                                                                at com.google.android.gms.auth.api.Auth$4.zza(Unknown Source)
                                                                                at com.google.android.gms.auth.api.Auth$4.zza(Unknown Source)
                                                                                at com.google.android.gms.common.api.GoogleApiClient$Builder.zza(Unknown Source)
                                                                                at com.google.android.gms.common.api.GoogleApiClient$Builder.zzaof(Unknown Source)
                                                                                at com.google.android.gms.common.api.GoogleApiClient$Builder.build(Unknown Source)
                                                                                at com.firebase.ui.auth.util.CredentialsAPI.initGoogleApiClient(CredentialsAPI.java:148)
                                                                                at com.firebase.ui.auth.util.CredentialsAPI.<init>(CredentialsAPI.java:64)
                                                                                at com.firebase.ui.auth.ui.ChooseAccountActivity.onCreate(ChooseAccountActivity.java:64)
                                                                                at android.app.Activity.performCreate(Activity.java:6251)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                                at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                at android.os.Looper.loop(Looper.java:148)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5422)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
07-01 22:33:17.261 715-773/com.gmail.rixx.justin.cashcaddy I/FA: Tag Manager is not found and thus will not be used
07-01 22:33:17.481 715-715/com.gmail.rixx.justin.cashcaddy D/FirebaseCrashApiImpl: throwable java.lang.NoSuchMethodError: No virtual method zztw()Ljava/util/Set; in class Lcom/google/android/gms/common/internal/zzg; or its super classes (declaration of 'com.google.android.gms.common.internal.zzg' appears in /data/app/com.gmail.rixx.justin.cashcaddy-2/base.apk)
07-01 22:33:17.517 715-715/com.gmail.rixx.justin.cashcaddy E/AndroidRuntime: FATAL EXCEPTION: main
                                                                         Process: com.gmail.rixx.justin.cashcaddy, PID: 715
                                                                         java.lang.NoSuchMethodError: No virtual method zztw()Ljava/util/Set; in class Lcom/google/android/gms/common/internal/zzg; or its super classes (declaration of 'com.google.android.gms.common.internal.zzg' appears in /data/app/com.gmail.rixx.justin.cashcaddy-2/base.apk)
                                                                             at com.google.android.gms.auth.api.signin.internal.zzd.<init>(Unknown Source)
                                                                             at com.google.android.gms.auth.api.Auth$4.zza(Unknown Source)
                                                                             at com.google.android.gms.auth.api.Auth$4.zza(Unknown Source)
                                                                             at com.google.android.gms.common.api.GoogleApiClient$Builder.zza(Unknown Source)
                                                                             at com.google.android.gms.common.api.GoogleApiClient$Builder.zzaof(Unknown Source)
                                                                             at com.google.android.gms.common.api.GoogleApiClient$Builder.build(Unknown Source)
                                                                             at com.firebase.ui.auth.util.CredentialsAPI.initGoogleApiClient(CredentialsAPI.java:148)
                                                                             at com.firebase.ui.auth.util.CredentialsAPI.<init>(CredentialsAPI.java:64)
                                                                             at com.firebase.ui.auth.ui.ChooseAccountActivity.onCreate(ChooseAccountActivity.java:64)
                                                                             at android.app.Activity.performCreate(Activity.java:6251)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                             at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                             at android.os.Looper.loop(Looper.java:148)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5422)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我正在onCreate中启动一个身份验证请求:

    FirebaseAuth auth = FirebaseAuth.getInstance();
    if (auth.getCurrentUser() != null) {
        // already signed in
        Toast.makeText(this, "Signed in!", Toast.LENGTH_LONG).show();
    } else {
        startActivityForResult(
                // Get an instance of AuthUI based on the default app
                AuthUI.getInstance().createSignInIntentBuilder().build(),
                RC_SIGN_IN);
        Toast.makeText(this, "Not signed in", Toast.LENGTH_LONG).show();
    }

并在onActivityResult中接受结果

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        if (resultCode == RESULT_OK) {
            // user is signed in
            Toast.makeText(this, "Signed in!", Toast.LENGTH_LONG).show();
        } else {
            // user is not signed in. Maybe just wait for the user to press
            // "sign in" again, or show a message
            Toast.makeText(this, "Not signed in!", Toast.LENGTH_LONG).show();
        }
    }
}

我认为我已经正确地设置了它。我下载了我的 google-services.json 并将其放在我的 app/ 目录中。 这是我的项目 build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

以及我的应用 gradle 文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.gmail.rixx.justin.cashcaddy"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
    compile 'com.google.firebase:firebase-core:9.2.0'
    compile 'com.google.firebase:firebase-database:9.2.0'
    compile 'com.google.firebase:firebase-auth:9.2.0'
    compile 'com.google.firebase:firebase-crash:9.2.0'
    compile 'com.firebaseui:firebase-ui:0.4.1'
}

apply plugin: 'com.google.gms.google-services'

当应用程序打开时就发生了崩溃,我认为这只是我的某个配置有点小问题。

谢谢


你在Firebase控制台中启用了登录方式吗? - Janki Gadhiya
是的。我有一个可以成功使用电子邮件和密码的网络应用程序。 - justinrixx
你能分享一下你的app.gradle文件吗? - M.Waqas Pervez
我认为你在这里贴出的崩溃日志并不是实际错误的原因,请仔细查看崩溃日志,并尝试找到真正的原因。如果您在日志中发现其他问题,请在此分享。!! - Janki Gadhiya
当我从旧版Firebase升级时,我遇到了类似的问题。看一下这个链接,也许它可以解决你的问题:https://dev59.com/2FoU5IYBdhLWcg3wi3SW - M.Waqas Pervez
@M.WaqasPervez 我连play服务都没有安装,所以我安装了最新版本,但是它对我并没有起作用。我更新了LogCat输出以包括更多信息。不确定那是否有用。 - justinrixx
2个回答

5

我曾经也遇到过类似的问题。很奇怪的是,在一个版本构建之后,这个问题就出现了。

由于错误信息中提到了缺少gms相关的东西,我解决这个问题的方法是将以下内容添加到我的依赖项中:

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

我认为这应该已经是Firebase Auth库的一个依赖项,所以我猜这是某种错误。


1
太棒了!这对我有用!当我将那个依赖项添加到Gradle中时,出现了一个关于混合Google服务版本的错误,但是当我进行Gradle构建时,它消失了。 - justinrixx

1

刚发布了Firebase UI for Android的0.4.2版本,其中包含必要的基础更改以解决此问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接