【问题标题】:why it needs two proguard rule -keep for same class为什么它需要两个 proguard 规则 - 为同一个班级保留
【发布时间】:2021-01-07 13:51:10
【问题描述】:

在一个应用程序中,在同一个规则文件中使用的 proguard 规则中看到了这两个。

-keep public class com.google.gson.**
-keep public class com.google.gson.** {public private protected *;}

第一个只有类。 第二个括号包含更多细节。

为什么需要两条规则?第一个不也适用于班级成员吗?

【问题讨论】:

    标签: proguard


    【解决方案1】:

    第一个选项 (-keep public class com.google.gson.**) 将保留包 com.google.gson 和所有底层包中的公共类名,但不保留它们的成员。

    使用第二个选项,相当于-keep public class com.google.gson.** { *; },您将保留公共类名及其成员。注释掉第一个 -keep 选项应该没有什么区别。

    您可以使用ProGuard Playground 查看您的 ProGuard 配置对 jar/apk 中的类的影响。我已经使用这些 -keep 选项创建了一个,您可以通过单击链接打开它们。

    【讨论】:

    • 在 ProGuard Playground 中,如果“注释掉第一个 -keep 选项”,如何查看差异/效果?
    • 目前不支持类树上的版本控制/差异。当您上传apk/jar时,您可以看到class-tree中绿色的keep标签在注释掉或添加规则时出现/消失。
    猜你喜欢
    • 2012-01-15
    • 2016-06-03
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多