您的位置:首页 > Web前端 > JavaScript

fastjson混淆应注意的事项

2018-01-24 16:21 323 查看
一添加依赖包

fastjson的jar下载地址:

http://mvnrepository.com/artifact/com.alibaba/fastjson/1.1.45.android

或者:

compile 'com.alibaba:fastjson:1.1.45.android'

二 混淆

1 忽略fastjosn

-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.**{*;}

2 忽略范型

-keepattributes Signature

3 忽略系列化

刚开始我是这样写的:

#不混淆Serializable接口的子类中指定的某些成员变量和方法
-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();
}

结果打debug包程序正常运行;打release包时,程序直接崩溃了,? 经过反复测试发现把Object对象转为JSONString时返回{},要求为空,所以程序直接崩溃了。

把上述代码改为:

-keepclassmembers class * implements java.io.Serializable { *; }


然后就可以了。究其原因是上面的代码在混淆时没有忽略私有属性,混淆时私有属性自然会被混淆,属性名发生变化,在Object对象转为JSonString时,就出现错误了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  fastjson