Android Proguard Jackson 问题(未找到序列化程序)

Android Proguard Jackson Problem (No serializer found)

我在项目中启用 Proguard 时遇到以下错误:

com.fasterxml.jackson.databind.JsonMappingException: 
No serializer found for class com.myapp.service.MyRequest and no properties discovered to create BeanSerializer 
(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) 

当我禁用 proguard (minifyEnabled false) 时一切正常

build.gradle:

   compileSdkVersion 26
   minSdkVersion 19
   targetSdkVersion 26 

   buildTypes {
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

proguard-rules.pro:

# Jackson
-keep @com.fasterxml.jackson.annotation.JsonIgnoreProperties class * { *; }
-keep class com.fasterxml.** { *; }
-keep class org.codehaus.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepclassmembers public final enum com.fasterxml.jackson.annotation.JsonAutoDetect$Visibility {
    public static final com.fasterxml.jackson.annotation.JsonAutoDetect$Visibility *;
}

我把这个添加到 proguard-rules.pro:

解决了这个问题
-keep public class your.class.** {
    public void set*(***);
    public *** get*();
}

我遇到了类似的问题。我可以使用 keepclasseswithmembers

来解决它
-keepclasseswithmembers class com.example.ClassName

我还有一个包,其中许多 类 被序列化和反序列化。在这种情况下,我已经从混淆中排除了这个包

-keep class com.example.package.** { *; }