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*(**);
}