Как использовать аннотации Java для руководства Android Proguard?

При использовании Proguard с Android методы, которые вызывается только посредством отражения (например, обратные вызовы, определенные в атрибутах XML onClick), ошибочно удаляются.

Одно из решений для этой проблемы - добавить каждый затронутый класс и метод к вашему proguard.cfg.

Как я могу использовать аннотации Java для достижения того же эффекта?

Я чувствую, что сделает код самодокументированным, и это позволит избежать кода и proguard.cfg, дрейфующих из синхронизации. Тем не менее, Android Proguard, похоже, не поставляется с аннотацией .jar, упомянутой в его документации.

Ответ 1

Вы можете получить annotations.jar и annotations.pro из официального релиза ProGuard. Затем вы можете использовать аннотации, как обсуждалось здесь

Все необходимые параметры можно найти в proguard.cfg.

Ответ 2

Недавно я столкнулся с этой проблемой. Вот что вам нужно сделать:

Чтобы исправить события onClick, добавьте это в настройки Proguard

-keepclassmembers class * extends android.app.Activity{
   public void *(android.view.View);
}

Чтобы сохранить аннотацию, добавьте

-keepattributes ** или -keepattributes *Annotation*

Дополнительная информация доступна здесь http://www.simpligility.com/2010/12/hints-for-using-proguard-on-your-android-app/ Я использую maven-android-plugin для компиляции приложения для Android, и эта статья в значительной степени подводит итог тому, что я делаю для Android заставить его работать. Надеюсь, это поможет!