EventBus и 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?

Ответ 1

У меня также была проблема с EventBus и ProGuard, и я связался с создателем ProGuard/DexGuard, и он прислал мне следующее "обходное решение", которое могло бы помочь:

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

Добавьте includedescriptorclasses в свой файл конфигурации, чтобы предотвратить шаг оптимизации ProGuard/DexGuard, чтобы добавить суффикс к имени метода.

Ответ 2

Не путайте метод. Мне это нравится:

Если я использую

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

Я сделаю

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

Он может работать.

Ответ 3

Если вы используете не общедоступный (пакетный) метод onEvent, вам необходимо обновить конфигурацию progaurd следующим образом:

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