Retrofit2 proguard remove param

Yo uso retrofit 2 & usando proguard en mi proyecto.

Mi proguarda:

-dontwarn retrofit2.** -keep class retrofit2.** { *; } -keepattributes Signature -keepattributes Exceptions -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } # Begin twitter 4j. -dontwarn twitter4j.** -keep class twitter4j.conf.PropertyConfigurationFactory -keep class twitter4j.** { *; } # End twitter 4j. # Start androidsocialnetworks -keep class com.androidsocialnetworks.lib.** { *; } # End androidsocialnetworks. # Google api -keep class com.google.** { *;} -keep interface com.google.** { *;} -dontwarn com.google.** -dontwarn sun.misc.Unsafe -dontwarn com.google.common.collect.MinMaxPriorityQueue -keepattributes *Annotation*,Signature -keep class * extends com.google.api.client.json.GenericJson { *; } -keep class com.google.api.services.** { *; } -dontwarn com.google.android.gms.cast.** -dontwarn com.google.android.gms.** -keep class com.google.android.gms.** { *; } -keep class * extends java.util.ListResourceBundle { protected Object[][] getContents(); } -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { public static final *** NULL; } -keepnames @com.google.android.gms.common.annotation.KeepName class * -keepclassmembernames class * { @com.google.android.gms.common.annotation.KeepName *; } -keepnames class * implements android.os.Parcelable { public static final ** CREATOR; } # End google api # Other -optimizations !class/unboxing/enum -dontwarn com.google.code.** -dontwarn oauth.signpost.** -dontwarn javax.management.** -dontwarn javax.xml.** #-dontwarn org.apache.** #-dontwarn org.slf4j.** -keep class org.** { *; } -keep class javax.** { *; } -assumenosideeffects class * implements org.slf4j.Logger { public *** trace(...); public *** debug(...); public *** info(...); public *** warn(...); public *** error(...); } # Rx java -dontwarn sun.misc.** -keep class rx.internal.util.unsafe.** { *; } -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { rx.internal.util.atomic.LinkedQueueNode producerNode; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { rx.internal.util.atomic.LinkedQueueNode consumerNode; } # End other # Java mail -dontwarn java.awt.** -dontwarn java.beans.Beans -dontwarn javax.security.** -keep class javamail.** {*;} -keep class javax.mail.** {*;} -keep class javax.activation.** {*;} -keep class com.sun.mail.dsn.** {*;} -keep class com.sun.mail.handlers.** {*;} -keep class com.sun.mail.smtp.** {*;} -keep class com.sun.mail.util.** {*;} -keep class mailcap.** {*;} -keep class mimetypes.** {*;} -keep class myjava.awt.datatransfer.** {*;} -keep class org.apache.harmony.awt.** {*;} -keep class org.apache.harmony.misc.** {*;} # End java mail 

Y en build.gradle también uso algún archivo proguard: (obtengo de: https://github.com/krschultz/android-proguard-snippets )

  proguardFile 'proguards/proguard-support-v7-appcompat.pro' proguardFile 'proguards/proguard-google-play-services.pro' proguardFile 'proguards/proguard-gson.pro' proguardFile 'proguards/proguard-butterknife-7.pro' proguardFile 'proguards/proguard-square-retrofit2.pro' proguardFile 'proguards/proguard-rx-java.pro' proguardFile 'proguards/proguard-rxjava-promises.pro' proguardFile 'proguards/proguard-square-okhttp3.pro' proguardFile 'proguards/proguard-jsoup.pro' proguardFile 'proguards/proguard-jackson-2.pro' proguardFile 'proguards/proguard-simple-xml.pro' proguardFile 'proguards/proguard-support-design.pro' proguardFile 'proguards/proguard-square-okio.pro' proguardFile 'proguards/proguard-facebook.pro' 

Aquí hay un método que define API:

 @GET("app/authenticate") Observable<AuthenticationModel> authenticate( @Query("email") String email, @Query("password") String password ); 

Entonces después de proguard decompile el archivo de APK entonces conseguí:

 @GET("app/authenticate") rx.a<AuthenticationModel> a(); 

No sé por qué se elimina todo parámetro. (Notas: Proyecto actual de trabajo, así como si no utiliza proguard) Por favor, ayuda!

ACTUALIZAR

El principal problema: he usado proguard-android-optimize Así que debería añadir (como respuesta @EpicPandaForce):

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

Pruebe la siguiente regla

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

Puede ser necesario ajustar el paquete con Retrofit2.

  • Ejecutar solicitud http en paralelo con Retrofit 2
  • Rx 2 Android ¿qué es mejor Single o Observable para llamadas api?
  • Hacer sucesivas llamadas de api con Retrofit y devolver observable
  • Apoyo de mejora SNI
  • Interfaz de deserialización de Gson para su implementación Class
  • La llamada a la API de Retrofit recibe "HTTP FAILED: java.io.IOException: Cancelled"
  • ¿Cómo registrar el cuerpo de solicitud y respuesta con Retrofit-Android?
  • Okhttp ignora la configuración de Dispatcher cuando se usa con Retrofit RxJavaCallAdapterFactory
  • ProGuard para Android y Retrofit2 Converter Gson?
  • Retrofit 2.0 lanzando "IllegalArgumentException: los parámetros @Field solo se pueden usar con la codificación de formularios". ¿Cómo hacer la consulta correcta de la API y arreglarlo?
  • Encadenamiento de solicitudes en Retrofit + RxJava
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.