我正在为我的应用程序构建一个插件系统。我读过任何人都可以解压缩.class文件,因此我不得不使用Ahead-Of-Time编译器(对吗?)。问题是我需要动态加载一些插件类。现在我正在加载文件夹中的所有.class文件,并调用静态方法(我从不创建对象)作为插件系统。
当我的所有源都是AOT编译时,我可以加载这些类吗? 我应该以另一种方式解决问题吗? Java是我的正确语言吗?
答案 0 :(得分:4)
提前编译不是为了阻止人们进行反编译。我认为你应该为此目的使用混淆器。
为插件系统动态加载类应该与混淆器和AOT一起使用。
答案 1 :(得分:2)
Tahit Akhtar是对的。你需要一个混淆器。您必须将其配置为不混淆程序动态加载和调用插件所使用的类和方法的名称。也就是说,插件的公共SPI不能被混淆,但它们的实现可以。
答案 2 :(得分:1)
除非你的类包含一些真正的绝密功能,否则我会说删除混淆......
我正在构建一个插件框架,我也有同样的想法阻止访问插件代码(因为一切都很敏感)但我放弃了,现在你能想到的一切都已经发布了在网络上,软件开发中没有其他秘密;)