这两个proguard选项有什么区别?
-keep class com.myclass.**
-keep class com.myclass.** { *; }
答案 0 :(得分:1)
第一条规则只保留类本身(以及默认构造函数)。
第二条规则还会在课程中保留所有方法和字段。
答案 1 :(得分:1)
-keep class com.myclass.**
保留com.myclass
包和所有子包中的所有类。即使缩小和优化步骤应该改变或删除这些类的结构,也不要这样做。
-keep class com.myclass.** { *; }
保留上面定义的com.myclass
包中的所有类以及这些类中的所有字段和方法。
区别的一个例子:使用第一个命令,我的入口点方法(例如main
)仍然可以缩小,优化和混淆。为了保持这些方法的签名完整,我可以指定我需要保留的方法或字段(或者只是通配符*
,尽管我认为它太宽泛了)。这对于必须保持签名和名称完整的反射和其他情况至关重要。
请注意-keepnames
和类似的命令也会保留签名,但前提是它们在缩小时尚未删除。