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
和类似的命令也会保留签名,但前提是它们在收缩期间尚未删除。
这两个 proguard 选项有什么区别?
-keep class com.myclass.**
-keep class com.myclass.** { *; }
第一条规则只会保留 类 本身(以及默认构造函数)。
第二条规则也将保留 类.
中的所有 方法 和 字段-keep class com.myclass.**
保留 com.myclass
包和任何子包中的所有 类。即使缩小和优化步骤应该改变或删除这些 类 的结构,也不要这样做。
-keep class com.myclass.** { *; }
保留上面定义的 com.myclass
包中的所有 类 以及那些 类.
差异示例:使用第一个命令,我的入口点方法(例如main
)仍然可以收缩、优化和混淆。为了保持这些方法的签名完整,我可以指定我需要保留的方法或字段(或者像您所做的那样只是通配符 *
,尽管我认为这太宽泛了)。这对于反思和其他必须保持签名和姓名完整无缺的情况至关重要。
请注意,-keepnames
和类似的命令也会保留签名,但前提是它们在收缩期间尚未删除。