fastjson混淆应注意的事项

本文介绍了如何在项目中添加FastJSON依赖,并提供了详细的混淆配置建议。特别关注了混淆过程中忽略私有属性的重要性,避免了在序列化时可能出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一添加依赖包

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时,就出现错误了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值