该问题是因为Debug版本未添加 EventBus的混淆,而Release版本添加 了EventBus的混淆导致的。
解决方法:
添加EventBus混淆规则。ProGuard工具混淆了方法名,并可能移除那些未被调用的方法。订阅者的事件处理方法没有被直接调用,如果开启了ProGuard工具的压缩功能,那么你必须告诉ProGuard工具保留这些订阅者方法。在模块的 proguard-rules.pro 混淆规则文件中添加如下规则:
# EventBus
-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);
}