У меня есть такой класс:
public class MyClass
{
private Queue<MyOtherClass> myQueue;
}
Моя проблема в том, что я не могу заставить ProGuard сохранить myQueue после сериализации в json с помощью Google Gson. Что происходит, так это то, что имя члена 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. Он сериализуется как "а".
Остальная часть соответствующей конфигурации 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]
}