【发布时间】:2012-02-06 07:55:30
【问题描述】:
我有这样的课:
public class MyClass
{
private Queue<MyOtherClass> myQueue;
}
我的问题是,在使用 Google Gson 序列化为 json 后,我无法让 ProGuard 保留 myQueue。发生的情况是成员名称“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]
}
【问题讨论】:
标签: java generics obfuscation gson proguard