2015-12-16 15 views
8

Non riesco a far funzionare Proguard con la libreria v1.1.0 di RxAndroid.Proguard e RxAndroid V1.1.0

In precedenza ho utilizzato v1.0.1 e questo ha funzionato correttamente con la seguente regola.

-dontwarn rx.internal.util.unsafe.** 

Tuttavia dopo l'aggiornamento a v1.1.0 di rxAndroid e anche compreso RxJava come si dice sul Github ReadMe.txt, ottengo questa eccezione ogni volta che uso RxAndroid nel mio codice.

Caused by: java.lang.NoSuchFieldException: producerIndex 

Così ho aggiunto più regole Proguard come le persone hanno detto in alcuni dei report di problemi sul 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.** 

Questo non funziona e continuo a causare arresti anomali durante la generazione dei build di rilascio. Qualche idea come vorrei usare le ultime librerie.

+2

Sede di Artem, che è sempre aggiornato: https://github.com/artem-zinnatullin/RxJavaProGuardRules – akarnokd

risposta

7

Aggiungo il seguente codice nel file proguard.

-keepclassmembers class rx.internal.util.unsafe.** { 
    long producerIndex; 
    long consumerIndex; 
} 
+0

E worked.Great ~! –

0

Si dovrebbe provare con set di regole

-keep class * { 
     public private *; 
    } 
    # rxjava 
    -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; 
    }