我工作的應用程序,目前使用谷歌GSON 1.7.1庫。它一切正常,但我想更新到最新版本。試圖更新到2.4,並在應用程序的調試版本,它運作良好。谷歌Gson 2.4 minifyEnable真正的問題
我最近嘗試在發佈版本上運行應用程序,突然JSON解析機制不起作用。將gson lib恢復到1.7.1可以解決問題,但我仍然希望將其更新爲最新版本。
我注意到的是,如果我在發佈版本上設置minifyEnabled
到false
,我開始再次獲取數據(解析機制起作用)。
有沒有人知道關於minifyEnabled true
和最新的gson lib的問題?
在我proguard的規則文件,我有相關的GSON LIB以下項目:
-keepclassmembers class com.myapp.data.beans.json.** {
private <fields>;
}
-keep class sun.misc.Unsafe { *; }
-keep class com.myapp.ui.views.** { *; }
-keepattributes Signature
-keepattributes *Annotation*
我也嘗試添加
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
按照谷歌GSON樣本config文件,但它不有什麼區別。
我已經做到這一點與 '-keepclassmembers類com.myapp.data.beans.json ** { 私人。 }' 我也保留相關類(但我忘了在最初的文章中加入) –
嘗試擴大規則。我在答案中發佈的規則是最廣泛的規則,所以我會給它一個去,然後我會縮小它,如果它的工作。例如,你確定bean中的所有字段都是私有的嗎?嘗試從proguard規則中刪除'private'。 –
好的。正如我在之前的評論中所說的,我已經爲反序列化過程保留了模型類。我也刪除了'私人'規則。另外,是的,我確定我的所有領域都是私人的 - 因此是規則。 '-keep class com.myapp.data.beans。** -keepclassmembers class com.myapp.data.beans。** {*; }' 仍然不起作用。另外,如果proguard配置錯誤,那麼反序列化過程就不適用於庫的1.7.1版本。 –