一添加依赖包
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时,就出现错误了。