ProGuard no funciona con okhttp

ProGuard no jugará bien con okhttp y sigo recibiendo las siguientes advertencias:

Warning:com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl: can't find referenced method 'long getContentLengthLong()' in program class com.squareup.okhttp.internal.huc.HttpURLConnectionImpl Warning:com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl: can't find referenced method 'long getHeaderFieldLong(java.lang.String,long)' in program class com.squareup.okhttp.internal.huc.HttpURLConnectionImpl Warning:com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpsURLConnection: can't find referenced method 'long getContentLengthLong()' in program class com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpURLConnection Warning:com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpsURLConnection: can't find referenced method 'long getHeaderFieldLong(java.lang.String,long)' in program class com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpURLConnection Warning:there were 4 unresolved references to program class members. Your input classes appear to be inconsistent. You may need to recompile the code. (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember) 

Estos son mis ajustes proguard para okhttp y retrofit:

 -dontwarn rx.** -dontwarn okio.** -dontwarn com.squareup.okhttp.* -dontwarn retrofit.appengine.UrlFetchClient -keep class retrofit.** { *; } -keepclasseswithmembers class * { @retrofit.http.* <methods>; } -keepattributes Signature -keepattributes *Annotation* 

¿Podría esto tener algo que ver con los cambios a ProGuard en Android Studio 1.0?

He intentado las respuestas a las preguntas relacionadas, pero sólo sugirió que utilice la configuración que ya tengo.

Esto funciona para mí:

Usted tiene que agregar a su proguard-rules.pro estas dos líneas:

 -keep class com.squareup.okhttp.** { *; } -keep interface com.squareup.okhttp.** { *; } 

El archivo proguard-rules.pro completo se verá así:

 -dontwarn rx.** -dontwarn okio.** -dontwarn com.squareup.okhttp.** -keep class com.squareup.okhttp.** { *; } -keep interface com.squareup.okhttp.** { *; } -dontwarn retrofit.** -dontwarn retrofit.appengine.UrlFetchClient -keep class retrofit.** { *; } -keepclasseswithmembers class * { @retrofit.http.* <methods>; } -keepattributes Signature -keepattributes *Annotation* 

Fuente: https://stackoverflow.com/a/24178851/4102045

Finalmente pude resolver este problema.

Las advertencias que encontré eran realmente sin sentido y pueden ser ignoradas.

En cambio, olvidé no ofuscar mis clases de modelo:

 -keep class com.example.datamodel.** { *; } 

Después de este cambio todo funcionó bien.

Funciona para mí con este configs. Use ** lugar de * para todas las sub clases con paquetes secundarios encapsulados

 -dontwarn org.xmlpull.v1.** -dontwarn com.squareup.** -keep class com.squareup.** { *; } 

Añada esto a su configuración de proguard:

 -dontwarn com.squareup.okhttp.internal.huc.** 

Creo que es seguro asumir que usted no está usando ninguna de las clases en com.squareup.okhttp.internal desde que es donde sus advertencias se originan.

Okhttp

-keepattributes Firma

-keepattributes Anotaciones

-mantener la clase okhttp3. ** {*; }

– Mantenga la interfaz okhttp3. ** {*; }

-dontwarn okhttp3. **

  • No simule ninguna red con Retrofit y MockWebServer
  • Cómo saber cuándo finaliza una llamada de Retrofit
  • Retrofit - Los parámetros de @Body no se pueden usar con codificación de formularios o multipartes
  • HTTP GET con el cuerpo de la solicitud RETROFIT
  • Cómo enviar datos JSON como Cuerpo usando Retrofit android
  • Cómo POST JSON todo en bruto en el cuerpo de una solicitud de Retrofit?
  • Cómo cancelar la solicitud con retofit2 y RxAndroid
  • Retrofit 2 (en Android) después de la implementación, ¿Dónde están mis elementos JSON?
  • RxJava onCompleted y onTerminate en el hilo principal
  • Detener un proceso de fondo en robospice
  • ¿Cómo configurar el nivel de registro de depuración y liberación para Retrofit?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.