【问题标题】:How to keep class and private instance variables in proguard如何在 proguard 中保留类和私有实例变量
【发布时间】:2021-05-26 15:08:03
【问题描述】:

您好,我在我的 android 应用程序中使用 proguard,我正在使用一个带有一些实例变量的类,我不希望 proguard 更改这些实例变量。

这是我的课:

public class Repository  {
   
    private Set<String> mInstalledApps;
}

我不想让 proguard 更改 mInstalledApps。

以下是我尝试过但不起作用的命令:

-keep class .Repository
-keepclassmembers class .Repository
-keepnames class .Repository

-keepclassmembers public class .Repository {
    *;
}

-keep public class .Repository$* {
        *;
 }

我如何做到这一点?

【问题讨论】:

    标签: android proguard


    【解决方案1】:

    ProGuard 要求您在 -keep 规则中提供完整的类路径,您可以保留类的所有私有字段,如下所示;

    -keep class com.example.Repository {
        private <fields>;
    }
    

    如果您只想保留 mInstalledApps 字段,可以使用 -keep 选项,如下所示;

    -keep class com.example.Repository {
        java.util.Set mInstalledApps;
    }
    

    您可以使用ProGuard PlayGround 来调整您的-keep 规则,这样您就不需要一遍又一遍地编译您的项目来查看它们的效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-10
      • 2017-10-13
      • 2012-02-08
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      相关资源
      最近更新 更多