Proguard不再适用于Retrofit

我发现了一些涉及同一主题的旧问题,但最新的版本没有可用的答案为我工作。

我在我的项目中使用Retrofit。 当我尝试组装时出现以下错误:

警告:retrofit.client.OkClient:找不到引用类com.squareup.okhttp.OkHttpClient

我正在使用以下但没有帮助:

-keepattributes Signature -keep class retrofit.** { *; } -keep class retrofit.http.** { *; } -keep class retrofit.client.** { *; } -keep class com.squareup.okhttp.** { *; } -keep interface com.squareup.okhttp.** { *; } -keep class com.google.gson.** { *; } -keep class com.google.inject.* { *; } -keep class org.apache.http.* { *; } -keep class org.codehaus.mojo.** { *; } -keep class org.apache.james.mime4j.* { *; } -keep class javax.inject.* { *; } -keep class sun.misc.Unsafe { *; } -libraryjars libs/acra-4.5.0.jar -libraryjars libs/radial-menu-v4.jar -dontwarn javax.xml.stream.events.** -dontwarn rx.** -dontwarn org.apache.lang.** # Application classes that will be serialized/deserialized over Gson -keep class com.example.package.network.** { *; } 

有没有人最近有这个问题,并解决了?

Solutions Collecting From Web of "Proguard不再适用于Retrofit"

可能看起来微不足道,但你有没有试过包括这一行? (如果你不使用okhttp的话)。

 -dontwarn com.squareup.okhttp.** 

事情是Square不在内部使用Proguard,所以虽然他们的图书馆可能会对所使用的内容做一些假设,但如果您的项目不使用它,则可以放心地忽略它。 我和毕加索有同样的问题,这对我来说是固定的。

 -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.** { *; } 

我已经用OKHTTP将上面的proguard文本用于Retrofit。

编辑 :很好的回购引用许多stream行的图书馆https://github.com/krschultz/android-proguard-snippets

这个configuration工作与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.** 

另外你需要添加所有的POJO类,用于改造,就像下面一样。

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

保持像下面的属性

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

有关改进的proguard的一个很好的讨论在这里