У меня есть некоторые классы, используемые для Retrofit2 и сериализованные Джексоном.
@JsonIgnoreProperties(ignoreUnknown = true)
class GetUserRequest(
@JsonProperty("user_id")
var userId: String? = null
)
Они работают в отладочных сборках, но когда я делаю сборку релиза с включенным proguard или уменьшением R8, он минимизирует переменные классов(как и ожидалось), но также и любой другой код, сгенерированный @JsonProperty, в результате чего сетевой запрос будет отправлен с помощью json, например {"a": "123"} вместо {"user_id": "123"}
Я включил поддержку реализации kotlin Джексона "com.fasterxml.jackson.module: jackson-module-kotlin: 2.9.9" реализация "com.squareup.retrofit2: преобразователь jackson: 2.6.0"
И у меня есть некоторые правила proguard, которые работают для моих объектов модели классов java.
-keep class com.fasterxml.jackson.databind.ObjectMapper {
public <methods>;
protected <methods>;
}
-keep class com.fasterxml.jackson.databind.ObjectWriter {
public ** writeValueAsString(**);
}
-keep class * {
@com.fasterxml.jackson.annotation.JsonCreator *;
@com.fasterxml.jackson.annotation.JsonProperty *;
}
-keepnames class com.fasterxml.jackson.** { *; }
-dontwarn com.fasterxml.jackson.databind.**
-keep class kotlin.Metadata { *; }
Какие правила proguard мне нужно добавить, чтобы Proguard не минимизировал свойства json?
Iне хочу просто исключать все из моего пакета моделей.