所以,我的应用程序从/向我的MainActivity向/从后台服务交换消息,我使用EventBus来处理它。我用
注册了这两个组件EventBus.getDefault().register(this);
他们的onCreates。我发送/接收一个事件:
EventBus.getDefault().post(new MyMessagePojo("message"));
和
public void onEvent(MyMessagePojo event) { ... }
当我将项目从AndroidStudio运行到我的测试手机时,一切正常。但是,当我生成签名的APK时,我安装了应用程序并遇到了崩溃,但出现以下异常:
Subscriber class my.package.MainActivity has no public methods called onEvent
它显然有的地方。我尝试在MainActivity中将其从onEvent
更改为onEventMainThread
,但没有成功。自从我即将发布应用程序以来,它非常令人沮丧,现在我无法解决这个问题。
有什么想法吗?
答案 0 :(得分:18)
这是在EventBus HOWTO文档中解决的。 https://github.com/greenrobot/EventBus/blob/master/HOWTO.md
使用以下代码仅保留onEvent函数。
-keepclassmembers class ** {
public void onEvent*(**);
}
答案 1 :(得分:1)
所以我设法保持这个方法在ProGuard上添加以下配置:
-keep public class my.package.MainActivity {
public <methods>;
}
然而,ProGuard在我的应用程序上搞乱了更多东西。我甚至无法登录我的应用程序(我不知道为什么,我只是立即收到网络问题警报)。我正在认真考虑将其关掉。