首页 文章

使用ProGuard模糊Java保护的元素

提问于
浏览
2

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

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

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

所以问题是,除了私有元素之外,我还可以强制ProGuard对这些受保护的元素进行模糊处理吗?

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

谢谢!

1 回答

  • 7

    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无法猜出您想要保留的内容 .

相关问题