android - 如何从proguard保持枚举

use*_*024 10 enums android proguard

在我的proguard中,我有以下内容来防止公共枚举被混淆.

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是否也将公共枚举货币保存在这样的类中?

public class Foo {
    public enum **Currency** {PENNY, NICKLE, DIME, QUARTER};

    ...
}
Run Code Online (Sandbox Code Playgroud)

如果没有,我必须单独添加什么?

添加以下内容似乎没有帮助.

-keepattributes InnerClasses
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢

Gab*_*one 18

你可以试试

-keep public enum com.stuff.TheEnclosingClass$** {
    **[] $VALUES;
    public *;
}
Run Code Online (Sandbox Code Playgroud)

正如这个答案所示,Proguard不会保留一个班级成员的枚举

只是别忘了放

-keepattributes InnerClasses
Run Code Online (Sandbox Code Playgroud)


Szy*_*mon 5

你能不能试着告诉 proguard 保留特定的类:

-keep class com.xxx.Foo { *; }
Run Code Online (Sandbox Code Playgroud)