How to use Java annotations to guide Android's Proguard?

懵懂的女人 提交于 2019-12-03 06:10:58

问题


When using Proguard with Android, methods that are only invoked via reflection (e.g., callbacks defined in onClick XML attributes) are erroneously stripped out.

One solution for this issue is to add each affected class and method to your proguard.cfg.

How can I use Java annotations to achieve the same effect?

I feel that would make the code self-documenting and it would avoid code and proguard.cfg drifting out of sync. However, Android's Proguard doesn't seem to ship with the annotations.jar mentioned in its documentation.


回答1:


You can retrieve annotations.jar and annotations.pro from an official ProGuard release. You should then be able to use annotations as discussed here

All the necessary options can go in proguard.cfg.




回答2:


I ran in to this problem recently. Here is what you need to do:

To fix the onClick events add this to Proguard settings

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

To keep annotation add

-keepattributes ** or -keepattributes *Annotation*

More information is available here http://www.simpligility.com/2010/12/hints-for-using-proguard-on-your-android-app/ I use maven-android-plugin to compile android app and this article pretty much sums up what I do for the android to get it working. Hope this helps!



来源:https://stackoverflow.com/questions/4458909/how-to-use-java-annotations-to-guide-androids-proguard

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!