Android volley 启用ProGuard规则时,Gson解析不起作用

Android volley 启用ProGuard规则时,Gson解析不起作用,android-volley,android-proguard,android,gson,Android Volley,Android Proguard,Android,Gson,[![Proguard规则][gson解析版本2.8.0][android官方截击版本1.0.0] 启用ProGuard规则时,Gson解析不起作用。我使用了官方版本的Volley 1.0.0和Gson 2.8.0。因此,每当我启用ProGuard规则时,Gson解析都不起作用。我还在proguard rules.pro文件中添加了必需的规则,但它仍然不起作用 依赖性 compile 'com.google.code.gson:gson:2.8.0' compile 'com.android.v

[![Proguard规则][gson解析版本2.8.0][android官方截击版本1.0.0]

启用ProGuard规则时,Gson解析不起作用。我使用了官方版本的Volley 1.0.0和Gson 2.8.0。因此,每当我启用ProGuard规则时,Gson解析都不起作用。我还在
proguard rules.pro
文件中添加了必需的规则,但它仍然不起作用

依赖性

compile 'com.google.code.gson:gson:2.8.0'
compile 'com.android.volley:volley:1.0.0'
前进规则:

-ignorewarnings
-keep class org.joda.** { *; }
-dontwarn org.joda.convert.FromString
-dontwarn org.joda.convert.ToString
-dontwarn org.joda.convert.**
-dontwarn org.joda.time.**
-keep class org.joda.time.** { *; }
-keep interface org.joda.time.** { *; }
-dontwarn org.mockito.**
-dontwarn sun.reflect.**
-dontwarn android.test.**
-dontwarn java.lang.management.**
-keepattributes Signature
-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.google.gson.**{ *; }
-dontwarn com.fasterxml.jackson.**
-keep class com.fasterxml.jackson.** { *; }
解析方法


您缺少
ResponseStatus
的规则:

-keep class com.yourapp.yourpackage.ResponseStatus { *; }

可能发生的情况是,ProGuard正在混淆
ResponseStatus
的方法和字段,当Gson试图设置它们时,它们的名称不再匹配。请记住,对于Gson使用的每个模型类,您都需要一个
-keep class
规则。

在Android Sutdio的Proguard Rules.pro文件中添加以下Proguard规则

Gson

-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
将您的模型排除在Proguard之外

-keepclassmembers class com.yourpackage.models** { <fields>; }
-keep class com.yourpackage.models{ *; }
-keepclassmembers类com.yourpackage.models**{;}
-保持类com.yourpackage.models{*;}

使用
-keep
是一种糟糕的做法,你不应该这样做;如果您确实需要一个ProGuard规则,您通常需要一个更具体的变体

-keepclassmembers
-这仅保护类的成员不受收缩和混淆的影响

-keepnames
-这允许类和成员收缩,但不允许混淆。也就是说,任何未使用的代码都将被删除。但保留的代码将保留其原始名称

-keepclassmembernames
-删除未使用的类,重命名剩余的类,删除这些类的未使用成员,但剩余成员保留其原始名称

欲了解更多信息,请阅读

PS-这就是我为Gson所做的

-keepclassmembernames class rscom.pojo.** { <fields>; }
-keepclassmembernames类rscom.pojo.*{;}

非常感谢@Mike Laren它工作了实际上我已经在proguard rule中添加了我的模型包-keep class com.example.mvc.codebase.models.*{*;}但是我的ResponseStatus类在另一个包中,所以我已经在proguard文件中添加了类,正如您所说的,它再次工作了
-keepclassmembernames class rscom.pojo.** { <fields>; }