fastjson混淆應注意的事項

一添加依賴包

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時,就出現錯誤了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章