2016-07-07 12 views
0

私はProguardを有効にし、私が使用しているすべてのライブラリに対して適切なプロガード規則を追加しました。Proguardを適用した後、ジャクソンの応答を解析してルートを持つjson応答をスキップします

ネットワークコールにRetrofitを使用し、応答を解析するためにJackson Converterを使用します。

私のJsonレスポンスにはルート値があり、これを解析するために、私は設定SerializationFeature.WRAP_ROOT_VALUEDeserializationFeature.UNWRAP_ROOT_VALUEを使用します。私がプロガードを適用するまで、すべてが働いていた。

解析例外を指定せずに、フィールドはnull値として解析されます。私はジャクソンのために使用しています

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 {*;} 

ある私は他の問題の多くを解決した後、この設定が出ています。

ここで問題をデバッグして理解することはできません。

答えて

0

ドメインクラスを維持するための設定では、いくつかのワイルドカードがありません。代わりに、この

-keepclasseswithmembers class com.jombay.vger.rx.resources.** { 
    public protected private <init>(...); 
    public void set(*); 
    public ** get*(); 
} 

のそれはむしろする必要があります:T-ナイトハルト@

-keepclasseswithmembers class com.jombay.vger.rx.resources.** { 
    <init>(...); 
    public void set*(***); 
    public *** get*(); 
} 
+0

:それは魅力のように働いたおかげでたくさん –

関連する問題