我正在开发一个作为Java jar分发的库,并且正在以这种方式运行proguard,只保留所需的接口。我有一堆的成员变量和一些枚举定义的配置类。我的proguard脚本保留成员变量罚款,但是,枚举定义被混淆。我尝试了所有我能想到的强制proguard来保留这些内部定义的和公共的枚举,但是我无法实现它。Proguard将不会保留一个类成员的枚举
现在我使用:
-keep public class com.stuff.MyConfigObject {
public *;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
如果我尝试:
-keep public enum com.stuff.MyConfigObject.MyEnum
我得到一个明确的错误: “注:配置指的是未知的类“com.stuff .MyConfigObject.MyEnum'“
感谢您的帮助!
谢谢,让我更加接近!但是,生成的.jar有点奇怪。枚举的类文件在那里,一切看起来都不错,但在Eclipse中,没有任何成员可以使用。代码完成显示它们是正确的,但编译仍然失败,“MyEnum无法解析或不是字段。”我使用的是proguard 4.4。 – Jesse 2011-06-09 14:24:39
我发现如果你添加'-keepAttributes **'它会起作用。不确定必须保留哪些特定属性,但是使用[Proguard参考](http://proguard.sourceforge.net/manual/usage.html#keepattributes)以及一些实验,我敢打赌你可以弄明白。 – 2011-06-09 20:47:38
谢谢@Kevin K,你是一个拯救生命的人。奇迹般有效! – Jesse 2011-06-13 14:29:27