EventBus和Proguard:无法派遣活动

Ach*_*lan 10 android proguard

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

Could not dispatch event: class com.achlan.myapp.events.e to subscribing class class com.achlan.myapp.b.d
Run Code Online (Sandbox Code Playgroud)

的mapping.txt:

com.achlan.myapp.events.RestResult -> com.achlan.myapp.events.e
com.achlan.myapp.data.DataManager -> com.achlan.myapp.b.d:
Run Code Online (Sandbox Code Playgroud)

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

-keepclassmembers class ** {
public void onEvent*(**); }
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*fen 5

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

-keepclassmembers,includedescriptorclasses class ** { public void onEvent*(**); }
Run Code Online (Sandbox Code Playgroud)

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


小智 0

不要混淆方法。我确实喜欢这样:

如果我使用

EventBus.getDefault().register(this, "getName", Name.class);
Run Code Online (Sandbox Code Playgroud)

我会做

-keepclassmembers class ** {
    public void getName(**);
}
Run Code Online (Sandbox Code Playgroud)

它可以工作。