使用ProGuard混淆Java受保护元素



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

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

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

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

换句话说,是否有一种方法可以告诉ProGuard"我已经完成了向这个包添加东西,请不仅混淆每个类中的私有内容,而且混淆包中的受保护内容"?

谢谢!

ProGuard会混淆配置中与-keep选项不匹配的所有内容。例如,从ProGuard手册> Examples>一个典型的库:

-keep public class * {
    public protected *;
}

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

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

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

因此,默认情况下,ProGuard会混淆所有内容,除非您指定保留某些元素。ProGuard猜不到你想保留什么

最新更新