使用proguard保留选定的注释

时间:2018-12-04 16:03:24

标签: proguard

是否甚至可以使用Proguard保留选定的注释?

例如,我想从

中删除所有注释
javax.xml.bind.annotation.*

但请不要使用

org.mycompany.annotations.MyAnnotation

我试图告诉Proguard保留如下注释,但根本不起作用。

-keep @interface org.mycompany.annotations.MyAnnotation

还是应该保留 Annotation 属性,然后以某种方式删除其余不需要的注释?

1 个答案:

答案 0 :(得分:0)

不确定我是否完全理解,通常我们通过使用

保留所有注释

-keepattributes *Annotation*

如果将其从 -keepAttributes 列表中删除,您也会丢失其他注释,并且代码可能无法正常工作。

理想情况下,我将使用应用了注释的类,而不是注释本身,例如,如果您具有应用于MyService类的注释MyModelClass

 @ MyModelClass
    public class MyService {
    }

我不希望MyService类发生任何事情,那么我将使用

-keep @MyModelClass class * {
    <methods>;
    <fields>;
}

正如您提到的,您不需要一些jaxb注释,我认为它们是编译时注释。

  

如果要删除所有编译时注释并保留运行时注释,则可能应使用-keepattributes RuntimeVisibleAnnotations