我定义了一个名为@KeepAll
的注释。
我有一个像
这样的界面@KeepAll
public interface MainEntity {
//some methods
}
我想保留所有实现此接口的类来进行混淆。这可能在ProGuard上实现吗?
注意我知道我可以将其定义为
-keep public class * implements **.MainEntity
但我不想指定接口名称而是注释名称。
答案 0 :(得分:1)
经过长时间的试错过程后,我得到了我想要的东西。这是解决方案
使用注释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>;}
答案 1 :(得分:-1)
您可以告诉ProGuard使用这样的注释保留所有内容:
-keep @com.google.inject.Singleton public interface *
以上将使界面本身不受混淆。
要获得接口的实现,您可以执行以下操作:
-keep public class * implements **.MainEntity
所以现在我很困惑你想要实现的目标。如果您只注释界面,它将不会成为ProGuard的帮助。这些类需要这个注释。