java.lang.RuntimeException: hbag: класс подписчика DashboardActivity и его суперклассы не имеют открытых методов с аннотацией @Subscribe - PullRequest
2 голосов
/ 03 июля 2019

Я работаю над этим приложением и использую EventBus 3.1.1 из greenbot.я пытаюсь опубликовать событие от фрагмента к активности.

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

Я искал, чтобы найти ответ, и все вышло так, что класс подписчика не должен быть классом плаката, и в моем случае нет никаких проблем в этом вопросе.

вот мойкод:

в моем фрагменте я звоню:

EventBus.getDefault().post(new FireEvent());

в моей деятельности:

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;

@Override
protected void onStop() {
    if (EventBus.getDefault().isRegistered(this))
        EventBus.getDefault().unregister(this);
    super.onStop();
}

@Override
protected void onStart() {
    super.onStart();
    if (!EventBus.getDefault().isRegistered(this))
        EventBus.getDefault().register(this);
}

и затем я подписываюсь на событие:

@Subscribe(threadMode = ThreadMode.MAIN)
public void fireEvent(FireEvent event) {

}

Ответы [ 2 ]

0 голосов
/ 23 июля 2019

основываясь на ответе @tidder, я продолжал пытаться добавлять и удалять правила и достиг следующего сценария, который отлично работает.

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

# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}
# EventBus 3.0
-keep class de.greenrobot.event.** { *; }
-keep class * {
    @de.greenrobot.event.* <methods>;
}
0 голосов
/ 03 июля 2019

Согласно документации, вы должны добавить следующие правила для вашей сборки выпуска: http://greenrobot.org/eventbus/documentation/proguard

...