【发布时间】:2016-07-07 10:01:24
【问题描述】:
我已启用 Proguard 并为我正在使用的所有库添加了适当的 proguard 规则。
我使用 Retrofit 进行网络调用,使用 Jackson 转换器来解析响应。
我的 Json 响应具有根值,为了使用 Jackson 解析它,我使用设置 SerializationFeature.WRAP_ROOT_VALUE 和 DeserializationFeature.UNWRAP_ROOT_VALUE。在我应用 proguard 之前一切正常。
在不给出任何解析异常的情况下,字段被解析为空值。
我为 Jackson 使用的 Proguard 规则是
-keepnames class com.fasterxml.jackson.** { *; }
-dontwarn com.fasterxml.jackson.databind.*
-keepattributes *Annotation*,EnclosingMethod,Signature
-keep class org.codehaus.** { *; }
-keepclassmembers public final enum
org.codehaus.jackson.annotate.JsonAutoDetect$Visibility {
public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *;
}
-keepclasseswithmembers class com.jombay.vger.rx.resources.** {
public protected private <init>(...);
public void set(*);
public ** get*();
}
-keepclasseswithmembers public class com.jombay.vger.retrofit.resources.** {
public protected private <init>(...);
public void set(*);
public ** get*();
}
-keepclasseswithmembers public class com.jombay.vger.utils.** {
public protected private <init>(...);
}
-keepclassmembers class * {
@org.codehaus.jackson.annotate.* *;
}
-keep class com.fasterxml.jackson.databind.ObjectMapper {*;}
-keep class com.fasterxml.jackson.databind.ObjectWriter {*;}
在解决了很多其他问题后,我想出了这个配置。
无法在此处调试和理解问题。
【问题讨论】:
标签: android json jackson proguard android-proguard