【发布时间】:2012-09-24 12:06:11
【问题描述】:
我想从删除中跳过一个特定的类。它通常不会在我的应用程序中的任何地方引用,而只能通过反射来引用,因此它确实会被收缩器删除。它被其包中的其他“相邻”类引用,但并未直接用于我的应用程序,而仅用于反射。
我决定专门为这个特定的类处理一个映射:
org.mypckg.Helper -> gh6
...然后我当然改变了我的应用程序的反射调用:
forName("gh6")
我的映射输入似乎没有问题,但映射规则本身不足以防止类被移除。此外,我仍然无法使用 -keep 开关保留该类,因为它确实使用其原始名称 (org.mypckg.Helper) 来保留它,这是我不想要的。
出于某种原因,我无法在项目中手动将类折射(重命名)为“gh6”。
【问题讨论】:
-
写完这个问题后,我想到了一个非常简单的解决方案。在我的应用程序某处“假使用”该类,但直接,而不是通过反射。但是,我想知道是否可以使用 ProGuard 来保存它?
-
为什么只保留这个类的原始名称会出现问题?代码中使用率高?
-
不常用,但很重要。
标签: java class obfuscation proguard preserve