在启用Proguard时,我遇到了Jackson和Kotlin数据类的问题。Jackson版本: 2.9.1 Jackson Converter版本: 2.3.0 Kotlin版本: 1.2.51
这是我的proguard文件:
-ignorewarnings
# Jackson 2.x
-keepclassmembers class com.jgarin.remote.models.** {
<init>(...);
<fields>;
}
-keepclassmembers class * {
@com.fasterxml.jackson.annotation.JsonCreator *;
@com.fasterxml.jackson.annotation.JsonProperty *;
}
#Required for Kotlin!
-keep class kotlin.Metadata { *; }
-keep class kotlin.reflect.** { *; }
-keepclassmembers public class com.jgarin.** {
public synthetic <methods>;
}
-keepattributes SourceFile,LineNumberTable,*Annotation*,EnclosingMethod,Signature,Exceptions,InnerClasses尽管如此,应用程序还是失败了,抛出了一个异常:
E/RxCallAdapterWrapper: Retrofit exception occurred
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.jgarin.remote.models.responses.GetVerificationCodeResponse` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)堆栈跟踪的其余部分几乎毫无用处。我很确定我漏掉了一些明显的东西。任何帮助都是非常感谢的。谢谢。
发布于 2019-12-13 03:59:15
我认为你的类中需要一个无参数的构造器来允许jackson实例化你的类。如下所示:
class AFHResponse(val MESSAGE: String, val CODE: String, val MIRRORS: Array<Mirror>) {
private constructor() : this("", "", emptyArray())
}来自here的示例
https://stackoverflow.com/questions/51898715
复制相似问题