Proguard y RxAndroid V1.1.0
Parece que Proguard no puede trabajar con la biblioteca RxAndroid v1.1.0.
Anteriormente he estado utilizando v1.0.1 y esto funcionó bien con la siguiente regla.
- Okhttp ignora la configuración de Dispatcher cuando se usa con Retrofit RxJavaCallAdapterFactory
- RxJava - subir archivos secuencialmente - emitir el siguiente elemento, cuando onNext llamado
- RxAndroid y Retrofit: No se puede crear el adaptador de llamada para io.reactivex.Observable <retrofit2.Response <okhttp3.ResponseBody >>
- ¿Es posible obtener 2 valores en onNext () de suscriptor en rxjava android?
- RxJava y datos almacenados en caché
-dontwarn rx.internal.util.unsafe.**
Sin embargo después de actualizar a v1.1.0 de rxAndroid y también incluyendo RxJava como se dice en el Github ReadMe.txt, obtengo esta excepción siempre que uso RxAndroid en mi código.
Caused by: java.lang.NoSuchFieldException: producerIndex
Así que he añadido más reglas Proguard como la gente ha dicho en algunos de los informes sobre el Github.
-keep class rx.schedulers.Schedulers { public static <methods>; } -keep class rx.schedulers.ImmediateScheduler { public <methods>; } -keep class rx.schedulers.TestScheduler { public <methods>; } -keep class rx.schedulers.Schedulers { public static ** test(); } -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { long producerNode; long consumerNode; } -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; } -dontwarn rx.internal.util.unsafe.**
Esto no funciona y siempre obtengo los bloqueos cuando genera las versiones de lanzamiento. Cualquier idea como me gustaría utilizar las últimas bibliotecas.
- RxJava + Retrofit + sondeo
- Solo observable con varios suscriptores
- ¿Cómo ignorar el error y continuar la corriente infinita?
- Problema relacionado con API observable y cancelación de suscripción
- RxJava y Retrofit - Aumento de excepciones personalizadas en función de la respuesta del servidor
- Maneje la respuesta vacía con retrofit y rxjava 2.x
- ¿Cómo usar un rxjava observable después de que se complete?
- RxJava con presentador y fragmento retenido para cambios de configuración
Añado el siguiente código en el archivo proguard.
-keepclassmembers class rx.internal.util.unsafe.** { long producerIndex; long consumerIndex; }