0

J'utilise eventbus dans mon application et ça fonctionne très bien en mode debuge mais ne fonctionne pas sur la version APK.Configuration ProGuard du bus d'événement greenrobot

code suivant utilisé pour la configuration ProGuard:

-keepattributes *Annotation* 
    -keepclassmembers class ** { 
    @org.greenrobot.eventbus.Subscribe <methods>; 
    } 
    -keep enum org.greenrobot.eventbus.ThreadMode { *; } 

Toutes mes méthodes Abonnez-annotés sont également publiques

sortie Logcat:

Impossible envoyer événement : classe com. dhaval.example.model.entity.response.DashboardUnreadStoryResponse de souscrire classe de classe com.dhaval.example.view.activity.MainActivity java.lang.NullPointerException: Tentative d'invoquer la méthode virtuelle « java.lang.String com.dhaval .example.model.entity.Dashboard.ba() 'sur une référence d'objet null à com.dhaval.example.view.activity.MainActivity.b (SourceFile: 150) à com.dhaval.example.view.activity .MainActivity.onEventBusEvent (SourceFile: 560) à java.lang.reflect.Method.invoke (méthode native) à org.greenrobot.eventbus.ca (fichier source: 485) à org.greenrobot.eventbus.ca (Source eFile: 420) à org.greenrobot.eventbus.ca (fichier source: 397) à org.greenrobot.eventbus.ca (fichier source: 370) à org.greenrobot.eventbus.cd (fichier source: 251) à com. dhaval.example.view.ar $ 1.a (SourceFile: 140) à com.dhaval.example.view.ar $ 1.a (SourceFile: 130) à com.dhaval.example.f.ap $ 2.a (SourceFile : 90) à com.dhaval.example.f.ap $ 2.a (SourceFile: 85) à com.dhaval.example.network.a $ 1.a_ (SourceFile: 101) at rx.caa_ (SourceFile: 134) à rx.internal.operators.n $ aa (fichier source: 224) au rx.abb $ b.run (SourceFile: 107) à android.os.Handler.handleCallback (Handler.java:751) à android.os.Handler.dispatchMessage (Handler.java:95) at android.os .Looper.loop (Looper.java:154) at android.app.ActivityThread.main (ActivityThread.java:6290) à java.lang.reflect.Method.invoke (Méthode native) à com.android.internal. os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:886) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776) 07-14 11: 39: 43.640 16402-16402/com.dhaval .example D/EventBus: Aucun abonné inscrit à la classe d'événement org.greenrobot.eventbus.j 07-1 E/com.dhaval.example.view.ar $ 1: Erreur dans getResponse: Tentative de invoquer la méthode virtuelle 'java.lang.String .example.model.entity.Dashboard.ba() » sur un objet nul référence

+0

Pour moi, il ne semble pas lié à un événement. C'est juste un NPE dans votre propre classe model.entity.Dashboard. Peut-être avez-vous besoin d'ajouter model.entity.Dashboard aux exceptions proguard: -keep class model.entity.Dashboard. ** {*; } – shtolik

+0

Mais ce même code fonctionne dans le débogage apk –

+0

Ok. Qu'il s'agisse en fait de la configuration de proguard greenrobot. Etes-vous sûr que vous appliquez ces règles dans votre fichier gradle sur la cible de publication? Aussi toujours vérifier et ajouter des contrôles dans votre model.entity.Dashboard.ba() cet abonné n'est pas null - alors il ne plantera pas avec NPE (mais probablement ne fonctionnera toujours pas) – shtolik

Répondre

1

sonne vraiment comme proguard liés, mais probablement pas EventBus, mais votre propre classe model.entity.Dashboard. Peut-être que vous devez ajouter ce model.entity.Tableau de bord dans les exceptions proguard:

-keep class model.entity.Dashboard.** { *; }