Исключение RuntimeException AndroidInjection.внедрение в службу Dagger2

#android #kotlin #crash #android-service #dagger-2

#Android #kotlin #сбой #android-сервис #кинжал-2

Вопрос:

У меня есть служба, и я использую dagger2 v2.27 , в консоли Google Play Store у вас произошел следующий сбой (у меня нет этого сбоя в консоли Firebase).

Вызвано: java.lang.Исключение RuntimeException: в dagger.android.AndroidInjection.inject (AndroidInjection.java:124)
в app.ui.main.ServiceNotificationListener.onCreate (ServiceNotificationListener.java:34) в android.app.ActivityThread.handleCreateService (ActivityThread.java:3758)

Я использую службу, которая расширяет Android NotificationListenerService , в onCreate у меня есть следующее

  override fun onCreate() {
        AndroidInjection.inject(this) // line 34
}
  

Основное приложение:

     class MainApplication : Application(), HasAndroidInjector {
    
     override fun onCreate() {
            super.onCreate()
     DaggerAppComponent
                .builder()
                .application(this)
                .build()
                .inject(this)
    }
}
  

В AndroidManifest.xml

    <application
        android:hardwareAccelerated = "true"
        android:name=".ui.MainApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBar.NoStatusBar">
  

Я не могу воспроизвести ошибку, я думаю, что приложение равно нулю, но не уверен, как я могу решить проблему для моей службы (зависит от NotificationListener) Большое спасибо

Комментарии:

1. Вы видели этот один ?

Ответ №1:

Я написал статью об этой ошибке. Если вы не знаете реальную проблему, ее трудно отследить или воспроизвести, а еще сложнее отладить. Это злая ошибка, и известно, что она привела по крайней мере одного инженера на грань безумия. В статье подробно рассказывается о реальной проблеме.

TL; DR — Просто установите android:allowBackup=false , и это должно исправить ваши сбои.

….

Мне нужно еще одно пиво, чтобы заглушить память об этой ошибке сейчас.

Ответ №2:

Если возможно, поделитесь кодом, используемым в NotificationListenerService. Поскольку это сервис, я бы предпочел внедрить его в класс модуля dagger.