Java ProGuard。类保留(不删除),但允许进行模糊处理

Java ProGuard。类保留(不删除),但允许进行模糊处理,java,class,obfuscation,proguard,preserve,Java,Class,Obfuscation,Proguard,Preserve,我想从删除中跳过特定类。它通常不会在我的应用程序中的任何地方被引用,但只能通过反射来引用,因此它确实会被收缩器删除。它被其包中的其他“相邻”类引用,但并不直接用于我的应用程序,而是仅通过反射 我决定专门针对这个特定的类处理一个映射: org.mypckg.Helper -> gh6 …当然,我用我的应用程序更改了反射调用: forName("gh6") 我的映射输入似乎没有问题,但映射规则本身不足以阻止类被删除。此外,我仍然无法使用-keep开关保留该类,因为它确实使用其原始名称(or

我想从删除中跳过特定类。它通常不会在我的应用程序中的任何地方被引用,但只能通过反射来引用,因此它确实会被收缩器删除。它被其包中的其他“相邻”类引用,但并不直接用于我的应用程序,而是仅通过反射

我决定专门针对这个特定的类处理一个映射:

org.mypckg.Helper -> gh6
…当然,我用我的应用程序更改了反射调用:

forName("gh6")
我的映射输入似乎没有问题,但映射规则本身不足以阻止类被删除。此外,我仍然无法使用-keep开关保留该类,因为它确实使用其原始名称(org.mypckg.Helper)保留它,我不希望这样


出于这样或那样的原因,我无法在项目中手动将类折射(重命名)为“gh6”。

ProGuard识别构造
class.forName(“org.mypckg.Helper”)
;然后,它保留并混淆
org.mypckg.Helper
,而无需进一步配置

否则:

-keep,allowobfuscation class org.mypckg.Helper
-adaptclassstrings org.mypckg.AdjacentClass*
美国联邦法规。ProGuard手册>用法>


美国联邦法规。ProGuard手册>用法>

在我写下这个问题后,我想到了一个非常简单的解决方案在我的应用程序中的某个地方冒用类,但不是直接通过反射。但是,我想知道是否有办法用ProGuard保存它?为什么只保留这个类的原始名称会有问题?它在代码中被高度使用?不经常使用,但很重要。是的,这正是我想要的。干杯(y)