【问题标题】:No virtual method verifyPhoneNumber, FATAL EXCEPTION: main没有虚拟方法 verifyPhoneNumber,致命异常:main
【发布时间】:2021-02-16 16:35:57
【问题描述】:

将库更新到 Gradle 文件后,尝试通过电话号码进行身份验证后遇到此错误。

--------- beginning of crash
2020-11-04 00:33:11.574 23042-23042/com.roko.hearth E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.roko.hearth, PID: 23042
java.lang.NoSuchMethodError: No virtual method verifyPhoneNumber(Ljava/lang/String;JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/Executor;Lcom/google/firebase/auth/PhoneAuthProvider$OnVerificationStateChangedCallbacks;Lcom/google/firebase/auth/PhoneAuthProvider$ForceResendingToken;)V in class Lcom/google/firebase/auth/PhoneAuthProvider; or its super classes (declaration of 'com.google.firebase.auth.PhoneAuthProvider' appears in /data/app/com.roko.hearth-BB3VSAScHPWVlEGN0MD3dw==/base.apk!classes2.dex)
    at com.firebase.ui.auth.ui.phone.PhoneNumberVerificationHandler.verifyPhoneNumber(PhoneNumberVerificationHandler.java:32)
    at com.firebase.ui.auth.ui.phone.CheckPhoneNumberFragment.onNext(CheckPhoneNumberFragment.java:164)
    at com.firebase.ui.auth.ui.phone.CheckPhoneNumberFragment.onClick(CheckPhoneNumberFragment.java:140)
    at android.view.View.performClick(View.java:7140)
    at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)
    at android.view.View.performClickInternal(View.java:7117)
    at android.view.View.access$3500(View.java:801)
    at android.view.View$PerformClick.run(View.java:27351)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7356)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

我搜索了一个解决方案,但同样的问题

我将这些用于 Firebase 的库放入 Gradle 中

// Firebase
implementation platform('com.google.firebase:firebase-bom:26.0.0')
//Firebase Authentication
implementation 'com.google.firebase:firebase-auth'
implementation 'com.firebaseui:firebase-ui-auth:6.2.1'

//Firebase Database
implementation 'com.google.firebase:firebase-database'
implementation 'com.firebaseui:firebase-ui-database:6.2.1'

//Firebase Messaging
implementation 'com.google.firebase:firebase-messaging'

//Firebase Storage
implementation 'com.google.firebase:firebase-storage'

implementation 'com.google.firebase:firebase-perf'

implementation 'com.google.firebase:firebase-core'

/////////////////////////////////////////////////////////////////////////////

和 SHA-1 代码是一样的。有人可以帮忙吗?

【问题讨论】:

    标签: java firebase gradle firebase-authentication


    【解决方案1】:

    我设法通过将 firebase auth 和 firebase auth-ui 降级为:

    implementation 'com.google.firebase:firebase-auth:19.3.1'
    implementation 'com.firebaseui:firebase-ui-auth:6.2.0'
    

    然后我删除了:

    // Firebase
    implementation platform('com.google.firebase:firebase-bom:26.0.0')
    

    所以 gradle 现在看起来像:

    // Firebase
    //Firebase Authentication
    implementation 'com.google.firebase:firebase-auth:19.3.1'
    implementation 'com.firebaseui:firebase-ui-auth:6.2.0'
    
    //Firebase Database
    implementation 'com.google.firebase:firebase-database:19.5.1'
    // FirebaseUI for Firebase Realtime Database
    implementation 'com.firebaseui:firebase-ui-database:6.4.0'
    
    //Firebase Messaging
    implementation 'com.google.firebase:firebase-messaging:21.0.0'
    
    //Firebase Storage
    implementation 'com.google.firebase:firebase-storage:19.2.0'
    
    implementation 'com.google.firebase:firebase-perf:19.0.9'
    
    implementation 'com.google.firebase:firebase-analytics:18.0.0'
    //////////////////////////////////////////////////////////////////////
    

    firebase 性能与 firebase 身份验证发生冲突。现在一切正常

    【讨论】:

    • 当您指定 firebase 依赖项的版本时,它会覆盖 BoM 版本。因此,无需指定所有其他 ok 模块。
    • 非常感谢。我花了整整一天的时间来解决这个问题。
    • 看看@DevAndroid 的回答,这是解决这个问题的更好方法。
    • 我相信firebase ui已经拥有所有需要的依赖,比如firebase auth ui已经有auth api那么你为什么要指定auth依赖呢?
    【解决方案2】:

    今天,当我使用最新版本的 Firebase Auth -'com.google.firebase:firebase-auth:20.0.0'时,我遇到了同样的问题。然后我再次将其更改为以前的工作版本('com.google.firebase:firebase-auth:19.4.0')并再次开始工作。希望这就是你要找的东西

    【讨论】:

      【解决方案3】:
      implementation platform('com.google.firebase:firebase-bom:26.1.0')
          implementation 'com.google.firebase:firebase-auth'
          implementation 'com.firebaseui:firebase-ui-auth:7.0.0'
      

      这是真正的修正;)

      【讨论】:

      • firebase-ui-auth 在哪里包含 7.0.0,除此之外我没有得到任何来源
      【解决方案4】:

      您只需将 firebaseUI 更新到最新版本

      implementation 'com.firebaseui:firebase-ui-auth:7.1.0' //or higher
      

      这意味着如果您使用最新的 firebase,则需要使用此处提到的最新的 firebaseUI https://github.com/firebase/FirebaseUI-Android/issues/1868

      【讨论】:

      • 这应该是带有解释的公认答案
      【解决方案5】:

      如果您以后遇到此问题,请查看GitHub page of firebase UI。它始终具有库的更新版本。如果您深入了解一下,您还会找到相关的依赖库并根据您的项目要求对其进行更新。

      【讨论】:

      • 我认为这是目前正确的解决方案。
      【解决方案6】:

      仅使用这一行就解决了我的问题。

      implementation 'com.firebaseui:firebase-ui-auth:8.0.0'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-13
        • 2018-04-11
        • 2022-06-10
        • 1970-01-01
        • 2022-10-25
        • 1970-01-01
        • 2017-01-10
        相关资源
        最近更新 更多