我正在开发一个库,它由几个单独的类组成,这些类一起工作以执行库的功能。然后,其中一个类公开了一些公共函数,所有外部代码都可以使用该库。
由于不同的类需要交互,我把它们都放在同一个包中,并且有很多"受保护"的东西(类和函数)。
问题是ProGuard默认情况下不会混淆这些受保护的元素,因为它们以后有可能与同一包中的另一个类组合在一起。但是,出于安全考虑,我希望防止这种情况发生。
所以问题是,除了私有元素之外,我能强迫ProGuard混淆这些受保护元素吗?
换句话说,是否有一种方法可以告诉ProGuard"我已经完成了向这个包添加东西,请不仅混淆每个类中的私有内容,而且混淆包中的受保护内容"?
谢谢!
ProGuard会混淆配置中与-keep选项不匹配的所有内容。例如,从ProGuard手册> Examples>一个典型的库:
-keep public class * {
public protected *;
}
该规范保留了所有公共和受保护的类、字段和方法。ProGuard混淆了其他任何东西。如果你想要混淆更多,你必须指定更少的元素来保留,例如使用一个或多个选项,像这样:
-keep public class mypackage.MyPublicClass {
public void myPublicMethod();
}
您可以使用通配符或其他模板,如ProGuard手册中所述。
因此,默认情况下,ProGuard会混淆所有内容,除非您指定保留某些元素。ProGuard猜不到你想保留什么