Proguard no longer works with Retrofit

老子叫甜甜 提交于 2019-11-29 03:39:57

Might seem trivial, but have you tried including this line? (If you don't use okhttp that is).

-dontwarn com.squareup.okhttp.**

Thing is Square doesn't use Proguard internally, so while their libraries may make some assumptions of what's being used, you can safely ignore it if your project doesn't use it. I had the same issue with Picasso and this fixed it for me.

-keepattributes Signature
-keepattributes *Annotation*
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-dontwarn com.squareup.okhttp.**

-dontwarn rx.**
-dontwarn retrofit.**
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
    @retrofit.http.* <methods>;
}

-keep class sun.misc.Unsafe { *; }
#your package path where your gson models are stored  
-keep class com.example.models.** { *; }

I have used the above proguard text for Retrofit with OKHTTP.

EDIT: Nice repo to refer for many popular libraries https://github.com/krschultz/android-proguard-snippets

This configuration worked for retrofit with gson.

#Using for retrofit & gson
-keep class com.google.gson.** { *; }
-keep class com.google.inject.** { *; }
-keep class org.apache.http.** { *; }
-keep class org.apache.james.mime4j.* { *; }
-keep class javax.inject.** { *; }
-keep class retrofit.** { *; }
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keepclassmembernames interface * {
    @retrofit.http.* <methods>;
}
-keep interface retrofit.** { *;}
-keep interface com.squareup.** { *; }
-dontwarn rx.**
-dontwarn retrofit.**

plus you need to add all the POJO classes which is used with retrofit just like below.

-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.packagename.your.pojo.models.** { *; }

keepattributes like below

-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes Deprecated
-keepattributes SourceFile
-keepattributes LineNumberTable
-keepattributes *Annotation*
-keepattributes EnclosingMethod

A nice discussion about proguard with retrofit goes here

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!