更新 Firebase 导致 RxBLE 崩溃
Updating Firebase causes RxBLE crash
好的,所以我有一些非常奇怪的行为,在我的应用程序中没有多大意义。
我的应用程序使用 BLE,我有一个静态 class,我在应用程序启动时对其进行了初始化,这通常没有问题。
今天我在我的应用程序中做了一个更改,就是更新这个:
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.access00(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.0
和 firebase-core:17.2.1
,但有没有人知道为什么会这样可能会发生?
这是导致崩溃发生所需的唯一代码行:
RxBleClient.create(applicationContext)
这是一个测试仓库,您可以在其中重现崩溃:
https://github.com/Doophie/TestAppCrash
请注意有 2 次提交,在第一次提交中应用程序更新了 firebase 并崩溃,第二次提交它没有崩溃并使用旧的 firebase 版本。
所以问题是 rxandroidble 库的版本与新的 firebase 消息传递不兼容。
当我从
更新时
implementation 'com.polidea.rxandroidble:rxandroidble:1.4.3'
到
implementation 'com.polidea.rxandroidble:rxandroidble:1.7.1'
崩溃停止了。
好的,所以我有一些非常奇怪的行为,在我的应用程序中没有多大意义。
我的应用程序使用 BLE,我有一个静态 class,我在应用程序启动时对其进行了初始化,这通常没有问题。
今天我在我的应用程序中做了一个更改,就是更新这个:
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.access00(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.0
和 firebase-core:17.2.1
,但有没有人知道为什么会这样可能会发生?
这是导致崩溃发生所需的唯一代码行:
RxBleClient.create(applicationContext)
这是一个测试仓库,您可以在其中重现崩溃: https://github.com/Doophie/TestAppCrash
请注意有 2 次提交,在第一次提交中应用程序更新了 firebase 并崩溃,第二次提交它没有崩溃并使用旧的 firebase 版本。
所以问题是 rxandroidble 库的版本与新的 firebase 消息传递不兼容。
当我从
更新时implementation 'com.polidea.rxandroidble:rxandroidble:1.4.3'
到
implementation 'com.polidea.rxandroidble:rxandroidble:1.7.1'
崩溃停止了。