问题描述
在一个应用程序中,在同一个规则文件中使用的 proguard 规则中看到了这两个。
-keep public class com.google.gson.**
-keep public class com.google.gson.** {public private protected *;}
第一个只有类。 第二个括号包含更多细节。
为什么需要两条规则?第一个不也适用于班级成员吗?
解决方法
第一个选项 (-keep public class com.google.gson.**
) 将保留包 com.google.gson 和所有底层包中的公共类名称,但不保留它们的成员。
使用第二个选项,相当于 -keep public class com.google.gson.** { *; }
,您将保留公共类名称及其成员。注释掉第一个 -keep 选项应该没有区别。
您可以使用 ProGuard Playground 来查看 ProGuard 配置对 jar/apk 中的类的影响。我已经使用这些 -keep 选项创建了一个选项,您可以通过单击链接打开这些选项。