我正在開發一個作爲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