Proguard / R8 минимизирует имена аннотаций @JsonProperty в классе данных Kotlin для Джексона - PullRequest
1 голос
/ 27 июня 2019

У меня есть некоторые классы, используемые для 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не хочу просто исключать все из моего пакета моделей.

...