告诉Proguard保留方法的注释

时间:2015-05-15 13:20:56

标签: java android annotations proguard

我使用自己的注释:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Loggable { }

使用Proguard进行混淆。我用-keepattributes *Annotation* 在Proguard配置中保留注释。

在运行时,当我使用someClass.getAnnotation(Loggable.class)带注释的类检索注释时,一切正常 - 我检索了我的注释的非null实例。

但是,当我想将其应用于某个类的带注释的方法时,我会从someMethod.getAnnotation(Loggable.class)检索null。

Proguard是否从方法中删除了注释?我怎么告诉它不要这样做?

我使用的是Proguard 4.7。

1 个答案:

答案 0 :(得分:11)

您需要使用keepclassmembers参数:

-keepclassmembers class ** {
  @com.yourpackage.Loggable public *;
}