我正在开发此应用程序,并且正在使用greenbot中的EventBus 3.1.1。 我想做的是将事件从片段发布到活动。
奇怪的是,我的代码在调试模式下工作正常,但是当我构建发行版时,尝试注册时会崩溃。
我一直在寻找答案,结果全都出来了,因为订户类别不应该是发布者类别,在我看来,这件事没有问题。
这是我的代码:
在我的片段中,我打电话给
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) {
}
答案 0 :(得分:0)
根据文档,您应该为发布版本添加以下保护规则:http://greenrobot.org/eventbus/documentation/proguard
答案 1 :(得分:0)
基于@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>;
}