Proguard вмешивается в имя поля запроса POJO - какие правила использовать? - PullRequest
0 голосов
/ 01 июля 2018

Мой интерфейс API содержит API:

public interface AwesomeClient {
    @Headers({"Content-Type: application/json"})
    @POST("/auth/token/")
    Single<Response<ResponseLogin>> postLogin(@Body ReqLoginData reqLoginData);
}

но когда я проверяю его, я вижу, что proguard заменил имена полей на "a, b, c, d, e":

07-01 11:19:47.325 10724-11101/com.my.app.stg D/OkHttp: --> POST https://staging.awesome.com/auth/token/
07-01 11:19:47.326 10724-11101/com.my.app.stg D/OkHttp: Content-Type: application/json
    Content-Length: 271
    Api-Key: 5e75b4cc45168968e03921b08b7b1099592a0432
    User-Agent: Awesome/986 CFNetwork/808.1.4 Darwin/16.1.0
    {"a":"3ff5e027308d409488801cacaf484c40@awesome.com"
    "b":"1530198979882",
    "c":"password",
    "d":"PmMwPNqSmbGy6CrOL94yqxMoZEClZEDjBbaxmPze",
    "e":"B4zCwVQLhHlMevbSgTCW6HhNjQVZP3qzF2Yg1XEDgG1KVRa3fhhe3ClwBllizFNI8QKA5xUeQCKLbBpyMf7tco8kW2zDJK1g9EcenNXavTva1e80VmUFrUgrk6oORhSo"}

У меня уже есть следующие правила для модернизации:

# Retrofit 2.X
## https://square.github.io/retrofit/ ##
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}

и для ОК:

# okHttp3
-dontwarn javax.annotation.Nullable
-dontwarn javax.annotation.ParametersAreNonnullByDefault
# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**
# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
-dontwarn okhttp3.internal.platform.ConscryptPlatform

что мне не хватает?

1 Ответ

0 голосов
/ 01 июля 2018

Я исправил это:

-keep class your.model.package.data.remote.request.** { *; }
-keep class your.model.package.data.remote.response.** { *; }

-keepclassmembernames interface * {
    @retrofit2.http.* <methods>;
}
...