我想用ProGuard混淆我的应用程序,我也希望一些内部类的成员保留他们的名字。这是因为我在Jackson中使用这些类来转换JSON和从JSON转换。 我的消息来源:
// this class mainly serves as a container for a group of related inner classes
public class MyOuterClass
{
public class IDontWantToKeepThisClassName1
{
public String IWantToKeepThisName1;
public float IWantToKeepThisName2;
}
public class IDontWantToKeepThisName2
{
public IDontWantToKeepThisClassName1 IWantToKeepThisName3;
public float IWantToKeepThisName4;
}
}
我希望上面的代码是自我解释的。我尝试在proguard-project.txt
中使用此命令实现此目的-keepclassmembernames class com.myapppackage.MyOuterClass$**
然而这不起作用。内部类成员仍然是混淆的。 测试用于猜测正确选项或语法的各种选项需要花费大量时间,因为每次更改都需要包导出以查看它是否有效。
答案 0 :(得分:2)
我很确定这样的事情可以解决问题:
-keepclassmembernames class com.myapppackage.MyOuterClass$** { *; }
所以请仔细检查。 测试显示{*;部分是必要的。虽然我无法解释原因。 请有洞察力的人详细说明。