[英]Why default proguard configurations in android sdk use keep *Annotation*
android sdk的默认proguard配置中只有一行:
-keepattributes *Annotation*
根据Proguard手册,此行等于:
-keepattributes RuntimeVisibleAnnotations,RuntimeInvisibleAnnotations,RuntimeVisibleParameterAnnotations,RuntimeInvisibleParameterAnnotations,RuntimeVisibleTypeAnnotations,RuntimeInvisibleTypeAnnotations,AnnotationDefault
我认为,也许下面的配置就足够了:
-keepattributes RuntimeVisibleAnnotations,RuntimeVisibleParameterAnnotations,RuntimeVisibleTypeAnnotations,AnnotationDefault
我有什么想念的吗? 为什么推荐的配置保留所有这些内容?
不,您的观察是正确的,以下配置会更正确,恕我直言:
-keepattributes RuntimeVisible*Annotation*,AnnotationDefault
大多数人可能不在乎运行时可见注释和不可见注释之间的细微差别,但是没有特定的理由保留运行时不可见注释。
编辑:以上内容仅适用于Android应用程序。 如果要构建Android库,则应坚持使用-keepattributes * Annotation *。
顺便说一句 DexGuard(ProGuard的商业变体)使用我上面建议的更新的配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.