EventBus和Proguard:无法派遣活动

时间:2013-08-27 07:57:15

标签: android proguard

我正在尝试导出已签名的应用,当我运行我的应用时,我会遇到此异常

Could not dispatch event: class com.achlan.myapp.events.e to subscribing class class com.achlan.myapp.b.d

的mapping.txt:

com.achlan.myapp.events.RestResult -> com.achlan.myapp.events.e
com.achlan.myapp.data.DataManager -> com.achlan.myapp.b.d:

我已将此行添加到我的proguard配置中:

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

我在proguard配置中遗漏了什么?

3 个答案:

答案 0 :(得分:4)

我还遇到了EventBus和ProGuard的问题,我联系了ProGuard / DexGuard的创建者,他向我发送了以下“解决方法”,这可能有所帮助:

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

includedescriptorclasses添加到配置文件中,以防止ProGuard / DexGuard的优化步骤为方法名称添加后缀。

答案 1 :(得分:0)

不要混淆方法。我喜欢这个:

如果我使用

EventBus.getDefault().register(this, "getName", Name.class);

我会做

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

它可以工作。

答案 2 :(得分:0)

如果您使用非公开(包私有)onEvent方法,则需要按如下方式更新progaurd配置:

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