【问题标题】:Obfuscate Java protected elements using ProGuard使用 ProGuard 混淆 Java 保护的元素
【发布时间】:2011-11-01 05:46:57
【问题描述】:

我正在开发一个库,该库由几个单独的类组成,这些类共同工作以执行库的功能。然后其中一个类公开了一些公共函数,所有外部代码都可以使用该库。

由于不同的类需要交互,所以我把它们都放在同一个包中,并且有很多“受保护”的东西(类和函数)。

问题是 ProGuard 默认不会混淆这些受保护的元素,因为它们以后可能会与同一个包中的另一个类组合。不过,出于安全原因,我想防止这种情况发生。

所以问题是,除了私有元素之外,我可以强制 ProGuard 混淆这些受保护元素吗?

换句话说,有没有办法告诉 ProGuard“我已经完成了向这个包中添加东西,请不仅混淆每个类中的私有内容,还混淆包中的受保护内容”?

谢谢!

【问题讨论】:

    标签: java obfuscation proguard


    【解决方案1】:

    ProGuard 会混淆与配置中的 -keep 选项之一不匹配的所有内容。例如,来自ProGuard manual > Examples > A typical library

    -keep public class * {
        public protected *;
    }
    

    本规范保留所有公共和受保护的类、字段和方法。 ProGuard 混淆了其他任何东西。如果你想混淆更多,你必须指定更少的元素来保留,例如有一个或多个像这样的选项:

    -keep public class mypackage.MyPublicClass {
        public void myPublicMethod();
    }
    

    您可以使用通配符或其他模板,如 ProGuard 手册中所述。

    因此,默认情况下,ProGuard 会混淆所有内容,除非您指定保留某些元素。 ProGuard 无法猜测您要保留什么。

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多