我定义了一个名为@KeepAll的注释。

我有一个像

@KeepAll
public interface MainEntity {
    //some methods
}


我想避免混淆实现该接口的所有类。在ProGuard上可以吗?

注意我知道我可以定义为

-keep public class * implements **.MainEntity


但是我不想指定接口名称,而是要指定注释名称。

最佳答案

经过长时间的反复试验,我得到了想要的东西。这是解决方案

用注释KeepAll保留类名称;

-keep @com.package.name.KeepAll public class **


保留类的类成员并使用注释KeepAll进行接口;

-keepclassmembers @com.package.name.KeepAll class ** { public <methods>; <fields>;}


保留实现带有KeepAll批注的类的类的类成员。 (这就是我想要的)

-keepclassmembers public class * implements @com.package.name.KeepAll ** { public <methods>; <fields>;}

08-18 03:15