Когда приложение минифицируется, она удаляет аннотации EventBus из моей библиотеки, даже с потребителем-proguard - PullRequest
0 голосов
/ 22 октября 2019

Я создаю частную библиотеку Android, которая экспортирует в AAR, эта библиотека имеет свою собственную обфускацию, и я создал правила для потребителей-proguard, чтобы передать правила приложению, которое использует библиотеку.

Проблема в том, что я использую EventBus для внутреннего использования, все работает нормально, пока приложение не минимизирует себя.

Я использую предоставленные правила хранения из репозитория EventBus в двух правилах proguard (потребитель и правила длябиблиотека)

-keepattributes *Annotation*
-keepclassmembers class * {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }

Но это не работает и выдает эту ошибку: Subscriber class g0 and its super classes have no public methods with the @Subscribe annotation

Я пытаюсь сохранить те классы, которые там используются, используя Subscribe

-keep class com.mypackage.mylibrary.MyClass {
    @org.greenrobot.eventbus.Subscribe public <methods>;
}
-keepclassmembers class com.mypackage.mylibrary.MyClass { *; }

И это работает, но не идеально. Если удалить какую-либо строку из этих двух, то остановка работает. У меня есть идея, почему это происходит, если удаление хранения для класса в двух файлах proguard при компиляции скомпилирует библиотеку прямо НО, когда правила потребителя пытаются пропустить com.mypackage.mylibrary.MyClass, не найдет.

Это просто происходит, когда приложение, использующее мой aar, пытается минимизировать.

Кто-нибудь сталкивался с такими же проблемами, как эта?

...