一添加依賴包
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時,就出現錯誤了。