【问题标题】:Updating Firebase causes RxBLE crash更新 Firebase 会导致 RxBLE 崩溃
【发布时间】:2020-02-13 14:55:58
【问题描述】:

好的,所以我有一些非常奇怪的行为,在我的应用中没有多大意义。

我的应用使用 BLE,并且我有一个在应用启动时初始化的静态类,这通常没有问题。

今天我对我的应用进行了一次更改,即更新:

    implementation 'com.google.firebase:firebase-core:17.2.1'
    implementation 'com.google.firebase:firebase-messaging:20.0.0'

到这里:

    implementation 'com.google.firebase:firebase-core:17.2.2'
    implementation 'com.google.firebase:firebase-messaging:20.1.0'

在对 firebase 核心进行小版本更新后,我的应用现在在启动时立即崩溃,并出现以下错误:

2020-02-13 09:44:57.530 20760-20760/my.package.name E/AndroidRuntime: FATAL EXCEPTION: main
    Process: my.package.name, PID: 20760
    java.lang.NoSuchMethodError: No static method injectMembers(Ldagger/MembersInjector;Ljava/lang/Object;)Ljava/lang/Object; in class Ldagger/internal/MembersInjectors; or its super classes (declaration of 'dagger.internal.MembersInjectors' appears in /data/app/my.package.name-Nbmle9woVCiX-2v0teYwZw==/base.apk!classes3.dex)
        at com.polidea.rxandroidble.RxBleAdapterStateObservable_Factory.get(RxBleAdapterStateObservable_Factory.java:28)
        at com.polidea.rxandroidble.RxBleAdapterStateObservable_Factory.get(RxBleAdapterStateObservable_Factory.java:10)
        at com.polidea.rxandroidble.RxBleClientImpl_Factory.get(RxBleClientImpl_Factory.java:104)
        at com.polidea.rxandroidble.RxBleClientImpl_Factory.get(RxBleClientImpl_Factory.java:23)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at com.polidea.rxandroidble.DaggerClientComponent.rxBleClient(DaggerClientComponent.java:419)
        at com.polidea.rxandroidble.RxBleClient.create(RxBleClient.java:54)
        at my.package.name.Comm.RxBLEComm.<init>(RxBLEComm.java:109)  // These are the only
        at my.package.name.Comm.RxBLEComm.init(RxBLEComm.java:118)    // lines in my code which
        at my.package.name.RootApp.onCreate(RootApp.kt:63)            // are totally unrealted to firebase
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1155)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5928)
        at android.app.ActivityThread.access$1100(ActivityThread.java:200)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6735)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2020-02-13 09:44:57.586 2989-3111/? E/NetworkController.MobileSignalController(2): showVoteIcon=false

注意:我的应用根本不使用 dagger,尽管 RxBLE 库可能...

如果我恢复 firebase 更新,应用程序构建和运行都没有问题,所以现在我将坚持使用 firebase-messaging:20.0.0firebase-core:17.2.1,但有人知道为什么会发生这种情况吗?

这是使崩溃发生所需的唯一代码行:

RxBleClient.create(applicationContext)

这是一个测试存储库,您可以在其中重现崩溃: https://github.com/Doophie/TestAppCrash

请注意,有 2 次提交,在第一次提交中应用更新了 firebase 并崩溃,第二次提交不会崩溃并使用较旧的 firebase 版本。

【问题讨论】:

  • 没有看到代码或没有特定的重现说明,很难想象发生了什么。请阅读:stackoverflow.com/help/minimal-reproducible-example
  • @DougStevenson 不幸的是没有涉及我的代码,所以没有什么可显示的,我看看我是否可以在一个新的空应用程序中重现并为此共享一个 git 存储库
  • @DougStevenson 我添加了一个可以复制的仓库

标签: android firebase dagger rxbluetooth


【解决方案1】:

所以问题是 rxandroidble 库的版本与新的 firebase 消息不兼容。

当我更新时

implementation 'com.polidea.rxandroidble:rxandroidble:1.4.3'

implementation 'com.polidea.rxandroidble:rxandroidble:1.7.1'

崩溃停止了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2021-10-14
    • 1970-01-01
    • 2018-02-07
    • 2019-04-15
    相关资源
    最近更新 更多