3
我有一類這樣的:ProGuard混淆,java,Google Gson和泛型集合 - 如何保持成員?
public class MyClass
{
private Queue<MyOtherClass> myQueue;
}
我的問題是,我不能讓ProGuard的保持myQueue中的序列化後使用谷歌GSON到JSON。會發生什麼是成員名稱「myQueue」被序列化爲「a」。顯然,反序列化隨後打破。
下面是我嘗試過的一些ProGuard配置。
-keepclassmembers class com.my.package.MyClass {
#private java.util.Queue<com.my.package.MyOtherClass> myQueue;
#private java.util.Queue<com.my.package.*> myQueue;
private java.* myQueue;
}
隨着
private java.util.Queue<com.my.package.MyOtherClass> myQueue;
... ProGuard的抱怨類是未知的。該消息是:
注:配置指的是未知的類
java.util.Queue<com.my.Package.MyOtherClass>'
使用
private java.* myQueue;
....擺脫了ProGuard的警告,但是,正如我說的,成員myQueue不保存在json輸出中。它被序列化爲「a」。
相關ProGuard配置文件中的其餘部分如下:
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-keepattributes *Annotation*
#gson
-keepattributes Signature
-adaptresourcefilenames **.properties,**.gif,**.jpg,**.png,**.wav
-adaptresourcefilecontents **.properties,META-INF/MANIFEST.MF
-optimizationpasses 3
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-keep public class com.my.package.MyOtherClass {
}
-keepclassmembers class com.my.package.MyOtherClass {
[a large number of private members are listed]
}
謝謝。我正在努力處理手冊。我還沒有弄清楚爲了獲得我期望的序列化成員名稱所需的內容。在大多數情況下,我需要序列化確切的成員名稱。這是我目前的問題。但是,在少數情況下,我使用了@SerializedName(「betterName」)protected String poorName;而我還沒有到達可以看到@SerializedName是否正在工作的地步...... – MountainX 2012-01-10 03:52:00