simple proguard keep 选项的区别

Differences in simple proguard keep option

这两个 proguard 选项有什么区别?

 -keep class com.myclass.**
 -keep class com.myclass.** { *; }

第一条规则只会保留 本身(以及默认构造函数)。

第二条规则也将保留 类.

中的所有 方法 字段
-keep class com.myclass.**

保留 com.myclass 包和任何子包中的所有 类。即使缩小和优化步骤应该改变或删除这些 类 的结构,也不要这样做。

-keep class com.myclass.** { *; }

保留上面定义的 com.myclass 包中的所有 类 以及那些 类.

中的所有字段和方法

差异示例:使用第一个命令,我的入口点方法(例如main)仍然可以收缩、优化和混淆。为了保持这些方法的签名完整,我可以指定我需要保留的方法或字段(或者像您所做的那样只是通配符 *,尽管我认为这太宽泛了)。这对于反思和其他必须保持签名和姓名完整无缺的情况至关重要。

请注意,-keepnames 和类似的命令也会保留签名,但前提是它们在收缩期间尚未删除。