Java ProGuard.类保持(不删除)但允许混淆

Pat*_*aDJ 5 java obfuscation class proguard preserve

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

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

org.mypckg.Helper -> gh6
Run Code Online (Sandbox Code Playgroud)

...然后当然我用我的应用改变了反射调用:

forName("gh6")
Run Code Online (Sandbox Code Playgroud)

我的映射输入似乎没有问题,但映射规则本身不足以阻止类被删除.另外我仍然无法使用-keep开关来保持类,因为它确实使用其原始名称(org.mypckg.Helper)来保留它,这是我不想要的.

出于这样或那样的原因,我无法在项目中手动将类重构(重命名)为"gh6".

Eri*_*une 12

ProGuard识别构造Class.forName("org.mypckg.Helper"); 然后它保持和混淆,org.mypckg.Helper无需进一步配置.

除此以外:

-keep,allowobfuscation class org.mypckg.Helper
-adaptclassstrings org.mypckg.AdjacentClass*
Run Code Online (Sandbox Code Playgroud)

(CFR).ProGuard手册>用法> 保留选项概述

(CFR).ProGuard手册>用法> -adaptclassstrings