Proguard больше не работает с Retrofit
Я нашел старые вопросы, которые касаются той же темы, но с последними версиями ни один из существующих ответов для меня.
Я использую Retrofit в своем проекте. Когда я пытаюсь собрать я получаю следующую ошибку:
предупреждение: retrofit.клиент.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.** { *; }
у кого-нибудь была эта проблема в последнее время и решить это?
3 ответов
может показаться тривиальным, но вы пробовали включить эту строку? (Если вы не используете okhttp, то есть).
-dontwarn com.squareup.okhttp.**
thing is 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.** { *; }
я использовал приведенный выше текст proguard для дооснащения с помощью OKHTTP.
редактировать: Хороший РЕПО для ссылки на многие популярные библиотеки https://github.com/krschultz/android-proguard-snippets
эта конфигурация работала дооснащение с помощью 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, как показано ниже
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes Deprecated
-keepattributes SourceFile
-keepattributes LineNumberTable
-keepattributes *Annotation*
-keepattributes EnclosingMethod