如何配置ProGuard以保留内部类成员的名称?

时间:2015-05-13 14:00:17

标签: android proguard

我想用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$**

然而这不起作用。内部类成员仍然是混淆的。 测试用于猜测正确选项或语法的各种选项需要花费大量时间,因为每次更改都需要包导出以查看它是否有效。

1 个答案:

答案 0 :(得分:2)

我很确定这样的事情可以解决问题:

-keepclassmembernames class com.myapppackage.MyOuterClass$** { *; }

所以请仔细检查。 测试显示{*;部分是必要的。虽然我无法解释原因。 请有洞察力的人详细说明。