我正在尝试导出已签名的应用,当我运行我的应用时,我会遇到此异常
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配置中遗漏了什么?
答案 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*(**);
}