ProGuard在这里定义了它的“保留”语法。
[@annotationtype] [[!]public|final|abstract|@ ...] [!]interface|class|enum classname
[extends|implements [@annotationtype] classname]
[{
[@annotationtype] [[!]public|private|protected|static|volatile|transient ...] <fields> |
(fieldtype fieldname);
[@annotationtype] [[!]public|private|protected|static|synchronized|native|abstract|strictfp ...] <methods> |
<init>(argumenttype,...) |
classname(argumenttype,...) |
(returntype methodname(argumenttype,...));
[@annotationtype] [[!]public|private|protected|static ... ] *;
...
}]
是否可以继续使用广义修饰符和类型?
例如-keep * * my.package.MySomething { *; }
The 1st*
表示任何来自 this part:的内容[!]public|final|abstract|@ ...]
,而
2nd*
表示来自 this part:的任何内容[!]interface|class|enum
。
更深入一点,我正在尝试动态生成 ProGuard 参数,但我不知道my.package.MySomething
是 an abstract class
orpublic enum
还是其他任何东西。
有没有办法,ProGuard 中的一个选项可以帮助我完成这个?