Retrofit2 proguard remove param
Yo uso retrofit 2 & usando proguard en mi proyecto.
Mi proguarda:
- Cómo enviar datos de formulario en retrofit2 android
- Android Retrofit 2 Simple XML Converter
- Falló el socket OkHttp3: EMFILE (Demasiados archivos abiertos)
- Cómo establecer dinámicamente la lista de encabezados en Retrofit 2 (Android)
- ¿Cómo llamar a API Gateway con Cognito Credentials a través de retrofit2 en Android?
-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>; }
- No se puede cargar datos desde caché okHttp & retrofit
- Unidad de prueba de la aplicación android con retrofit y rxjava
- OkHttp y Retrofit, token de actualización con solicitudes concurrentes
- Establecer url de base dinámica utilizando Retrofit 2.0 y Dagger 2
- HTTPS con Retrofit y OkHttp Handshake falló
- No se puede convertir el objeto Subclase en cuerpo de solicitud json en Retrofit 2.0 con GsonConverterFactory
- Retrofit 2 cómo obtener la respuesta de objetos anidados json (android)
- POST Multipart Form Datos usando Retrofit 2.0 incluyendo imagen
Pruebe la siguiente regla
-keepclasseswithmembers class * { @retrofit2.http.* <methods>; }
Puede ser necesario ajustar el paquete con Retrofit2.
- Error al iniciar el emulador en Linux
- Android OpenGL ES 2.0: No obtengo resultados que quiero con Matrix.traslateM