3

因此,我的应用程序在 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 中将其从更改为onEventonEventMainThread但没有成功。自从我即将发布应用程序以来,这非常令人沮丧,现在我无法解决这个问题。

我经历过这个这个,但他们没有帮助。

有任何想法吗?

4

2 回答 2

18

这在 EventBus HOWTO 文档中得到解决。 https://github.com/greenrobot/EventBus/blob/master/HOWTO.md

使用以下代码仅保留 onEvent 函数。

-keepclassmembers class ** {
    public void onEvent*(**);
}
于 2015-09-27T02:41:19.307 回答
1

所以我设法保持这种方法在 ProGuard 上添加以下配置:

-keep public class my.package.MainActivity {
    public <methods>;
}

但是,ProGuard 在我的应用程序上搞砸了更多的东西。我什至无法登录我的应用程序(我不知道为什么,我只是立即收到网络问题警报)。我正在认真考虑关闭它。

于 2015-06-16T21:42:36.143 回答