10

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

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

映射.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 配置中是否缺少某些内容?

4

3 回答 3

4

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

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

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

于 2015-04-20T07:51:16.350 回答
0

如果您使用非公共(包私有)onEvent 方法,您将需要更新您的 progaurd 配置,如下所示:

-keepclassmembers class ** {
    public void onEvent*(**);
    void onEvent*(**);
}
于 2014-10-14T15:33:27.763 回答
0

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

如果我使用

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

我会做

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

它可以工作。

于 2014-07-21T05:16:25.390 回答