Модернизация 2 с Proguard

Без включенного Proguard модификация 2 работает правильно... но когда он включен, происходит сбой приложения...

Вот мои правила Proguard:

-dontwarn retrofit2.Platform$Java8
-dontwarn okio.**
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepattributes *Annotation*

-keepattributes RuntimeVisibleAnnotations
-keepattributes RuntimeInvisibleAnnotations
-keepattributes RuntimeVisibleParameterAnnotations
-keepattributes RuntimeInvisibleParameterAnnotations

-keepattributes EnclosingMethod

-keepclasseswithmembers class * {
    @retrofit2.* <methods>;
}

-keepclasseswithmembers interface * {
    @retrofit2.* <methods>;
}
-keepclassmembers class demirci.omer.butun.gazeteler.siteler.newspapers.data.model.** { <fields>; }
-keep class demirci.omer.butun.gazeteler.siteler.newspapers.data.model.** { <fields>; }
-keep class demirci.omer.butun.gazeteler.siteler.newspapers.data.ApiEndPoint { <fields>; }
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keep class retrofit2.converter.gson.** { *; }

Я прочитал ниже вопрос: правило retrofit2

Но я также использую конвертер retrofit2 с POJO. Я думаю, что проблема возникает с этим... Нашел этот вопрос: gson-converter

Существует два условия возникновения проблемы.

Правила Retrofit2 proguard не подходят Или конвертер Retrofit2 GSON с POJO не конвертирует данные, если поля запутаны

Я не знаю, с каким условием возникает проблема...

вот мой API-интерфейс:

public interface ApiEndPoint {

    @FormUrlEncoded
    @POST("all_newspaper/get_text.php")
    Call<NewsContentClass> getContent(@Field("url") String url);

    @FormUrlEncoded
    @POST("all_newspaper/add_user_url.php")
    Call<Void> addUserUrl(@Field("app_name") String appName,@Field("mobile_url") String mobile_url,@Field("desktop_url") String desktop_url);
}

person Ucdemir    schedule 14.06.2016    source источник


Ответы (2)


Попробуйте добавить

-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}
person JohnWowUs    schedule 16.06.2016

попробуйте эти правила с сайта retrofit2:

    ########--------Retrofit + RxJava--------#########
# Platform calls Class.forName on types which do not exist on Android to determine platform.
-dontnote retrofit2.Platform
# Platform used when running on Java 8 VMs. Will not be used at runtime.
-dontwarn retrofit2.Platform$Java8
# Retain generic type information for use by reflection by converters and adapters.
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions
person j2emanue    schedule 23.08.2017