繁体   English   中英

为什么Android SDK中的默认Proguard配置使用keep * Annotation *

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM