Обновление Firebase вызывает сбой RxBLE - PullRequest
0 голосов
/ 13 февраля 2020

Хорошо, у меня очень странное поведение, которое не имеет особого смысла в моем приложении.

Мое приложение использует BLE, и у меня есть класс stati c, который я инициализирую при запуске приложения обычно это работает без проблем.

Сегодня я внес одно изменение в свое приложение, которое должно было обновить это:

    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

Примечание. Мое приложение вообще не использует кинжал, хотя библиотека RxBLE может ... .

Если я вернусь к обновлению firebase, приложение собирается и запускается без проблем, поэтому сейчас я просто остановлюсь на использовании firebase-messaging:20.0.0 и firebase-core:17.2.1, но кто-нибудь знает, почему это может быть происходит?

Это единственная строка кода, необходимая для того, чтобы cra sh произошло:

RxBleClient.create(applicationContext)

Вот тестовое репо, в котором вы можете воспроизвести cra sh в: https://github.com/Doophie/TestAppCrash

Обратите внимание, что в первом ommit приложение обновляет firebase и вылетает, второй коммит не обрабатывает sh и использует более старую версию firebase.

1 Ответ

0 голосов
/ 21 февраля 2020

Таким образом, проблема заключалась в том, что версия библиотеки rxandroidble была несовместима с новым сообщением Firebase.

При обновлении с

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

до

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

Крей sh остановлен.

...