Android 启用缩小时JsonProperty不工作

Android 启用缩小时JsonProperty不工作,android,jackson,proguard,kotlin,Android,Jackson,Proguard,Kotlin,我有以下课程 class CodeRequest(@JsonProperty("phone") val phoneNumber: String) 当我以此类对象作为主体发送请求(使用改装)时(未启用缩小),一切正常,请求将以这种形式发送{“phone”:“123”} 但是使用以下proguard规则启用缩小。pro将导致{“phoneNumber”:“123”}请求正文 # Jackson -keep class com.fasterxml.jackson.databind.ObjectMap

我有以下课程

class CodeRequest(@JsonProperty("phone") val phoneNumber: String)
当我以此类对象作为主体发送请求(使用改装)时(未启用缩小),一切正常,请求将以这种形式发送
{“phone”:“123”}

但是使用以下
proguard规则启用缩小。pro
将导致
{“phoneNumber”:“123”}
请求正文

# Jackson
-keep class com.fasterxml.jackson.databind.ObjectMapper {
    public <methods>;
    protected <methods>;
}
-keep class com.fasterxml.jackson.databind.ObjectWriter {
    public ** writeValueAsString(**);
}
-keep @com.fasterxml.jackson.annotation.* class * { *; }
-keep @com.fasterxml.jackson.annotation.** class * { *; }
-keep class com.fasterxml.** { *; }
-keepattributes *Annotation*,EnclosingMethod,Signature,Exceptions,InnerClasses
-keep class * {
    @com.fasterxml.jackson.annotation.* *;
}
-keep class * { @com.fasterxml.jackson.annotation.JsonProperty *;}

# Application classes that will be serialized/deserialized over Jackson
-keepclassmembers class my.application.data.models.** { *; }
-keepclassmembers class my.application.domain.network.rest.** { *; }
#Jackson
-keep类com.fasterxml.jackson.databind.ObjectMapper{
公众;
受保护的;
}
-保留com.fasterxml.jackson.databind.ObjectWriter类{
公共**writeValueAsString(**);
}
-保留@com.fasterxml.jackson.annotation.*class*{*;}
-keep@com.fasterxml.jackson.annotation.**class*{*;}
-保持类com.fasterxml.*{*;}
-keepattributes*注释*、封闭方法、签名、异常、内部类
-上课*{
@com.fasterxml.jackson.annotation.*;
}
-保持类*{@com.fasterxml.jackson.annotation.JsonProperty*;}
#将通过Jackson进行序列化/反序列化的应用程序类
-keepclassmembers类my.application.data.models.*{*;}
-keepclassmembers类my.application.domain.network.rest.*{*;}
这里少了什么


谢谢。

在发布问题几分钟后找到了解决方案。 问题不在于
proguard
jackson
,而是Kotlin删除了存储在
Kotlin.Metadata
中的所需数据。 将以下规则添加到proguard解决了此问题:

-keep class kotlin.Metadata { *; }