Gson 防止被混淆

Posted 使出洪荒之力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gson 防止被混淆相关的知识,希望对你有一定的参考价值。

##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }

##---------------End: proguard configuration for Gson  ----------


这是google官方的proguard的文档,请注意倒数第二行,class 后方到**签名的 这一段包名应该是你所有的java bean 定义的目录(在写代码时,应该把java  bean 单独放在一个包中)。

另外附上,
1.Serializable 的配置

# Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn‘t save them.
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

-keep public class * implements java.io.Serializable {*;}
2.可以在proguard中 强制使所有混淆失效
-dontobfuscate
-dontoptimize
转载:http://blog.sina.com.cn/s/blog_4e1e357d0101ednf.html

以上是关于Gson 防止被混淆的主要内容,如果未能解决你的问题,请参考以下文章

Fresco 源码解析 - 利用 @DoNotSkip 来防止混淆

防止目录被混淆

使用 Google Closure Compiler 时如何防止关键字被混淆?

混淆后 gson 的 Proguard 错误

切换到 Gradle:为啥我必须防止自定义视图被混淆?

android中的proguard - 我应该混淆gson POJO