Annotations 防止Proguard使用注释混淆子类

Annotations 防止Proguard使用注释混淆子类,annotations,gson,proguard,Annotations,Gson,Proguard,我有一些带有Gson注释的类,需要通过ProGuard避免混淆。这段代码可以工作 public abstract class FacebookIdentifier { @Expose public String id; @Expose public String name; } -keepclasseswithmembers class * { @com.google.gson.annotations.* <fields>; } 这样的类是模糊的,即使它的

我有一些带有Gson注释的类,需要通过ProGuard避免混淆。这段代码可以工作

public abstract class FacebookIdentifier {
    @Expose public String id;
    @Expose public String name;
}

-keepclasseswithmembers class * {
    @com.google.gson.annotations.* <fields>;
}

这样的类是模糊的,即使它的父类有一些注释可以防止它被模糊。有没有办法使此类不被混淆?

您必须明确指定扩展名:

-keep class com.example.FacebookApplication
然而,对于JSON,类名可能并不重要;只有字段名。保存字段就足够了:

-keepclassmembers class * {
    @com.google.gson.annotations.* <fields>;
}
-keepclassmembers类*{
@com.google.gson.annotations.*;
}

这是假设所有序列化字段都带有注释,这对于GSON来说并不是严格要求的。

必须明确定义每个类是我试图避免的。这不是很安全的重构。所以不好维持。
-keepclassmembers
的工作效果并不比
-keepClassSwithMembers
好,它没有考虑继承的类。这个问题有什么进展吗??
-keepclassmembers class * {
    @com.google.gson.annotations.* <fields>;
}