【问题标题】:Android Proguard Jackson Problem (No serializer found)Android Proguard Jackson 问题(未找到序列化程序)
【发布时间】:2020-11-26 19:54:50
【问题描述】:

在我的项目中启用 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 *;
}

【问题讨论】:

    标签: android jackson proguard


    【解决方案1】:

    我解决了将其添加到 proguard-rules.pro 的问题:

    -keep public class your.class.** {
        public void set*(***);
        public *** get*();
    }
    

    【讨论】:

      【解决方案2】:

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

      -keepclasseswithmembers class com.example.ClassName
      

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

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

      【讨论】:

        猜你喜欢
        • 2012-01-12
        • 2017-07-09
        • 2018-10-06
        • 2021-12-31
        • 2021-07-30
        • 2018-10-26
        • 1970-01-01
        • 2016-12-24
        • 2020-07-26
        相关资源
        最近更新 更多