构建项目时出现 EventBus 异常 - 订阅者 class 没有 public 方法调用 onEvent

EventBus exception when proj is built - Subscriber class has no public methods called onEvent

所以,我的应用交换消息 from/to 我的 MainActivity to/from 一个后台服务,我用 EventBus 来处理它。我正在使用

注册这两个组件
EventBus.getDefault().register(this);

在他们的 onCreate 上。我是 sending/receiving 一个事件:

EventBus.getDefault().post(new MyMessagePojo("message"));

public void onEvent(MyMessagePojo event) { ... }

当我 运行 将我的 AndroidStudio 项目直接用于我的测试 phone 时,一切正常。但是,当我生成签名的 APK 时,我安装了该应用程序并发生崩溃,但出现以下异常:

Subscriber class my.package.MainActivity has no public methods called onEvent

显然有。我尝试在我的 MainActivity 中将它从 onEvent 更改为 onEventMainThread 但没有成功。非常沮丧,因为我正要发布应用程序,但现在我无法解决这个问题。

我经历过 this and this 但他们没有帮助。

有什么想法吗?

所以我设法保留了这个方法,在 ProGuard 上添加了以下配置:

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

但是,ProGuard 正在扰乱我应用程序中的更多内容。我什至无法登录我的应用程序(我不知道为什么,我只是立即收到网络问题警报)。我正在认真考虑将其关闭。

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

使用下面的代码只保留 onEvent 函数。

-keepclassmembers class ** {
    public void onEvent*(**);
}