我使用自己的注释:
@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。
答案 0 :(得分:11)
您需要使用keepclassmembers
参数:
-keepclassmembers class ** {
@com.yourpackage.Loggable public *;
}