2015-12-16 14 views
8

Nie mogę sprawić, że Proguard będzie pracował z biblioteką RxAndroid v1.1.0.Proguard i RxAndroid V1.1.0

Poprzednio używałem wersji 1.0.1 i działało to dobrze z następującą zasadą.

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

Jednak po aktualizacji do v1.1.0 z rxAndroid a także tym RxJava jak mówi na GitHub ReadMe.txt, otrzymuję ten wyjątek, gdy używam RxAndroid w moim kodu.

Caused by: java.lang.NoSuchFieldException: producerIndex 

Dodałem więc więcej reguł dotyczących gry Proguard, jak ludzie mówią w niektórych raportach na temat Githuba.

-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.** 

To nie działa i ciągle dostaję awarie podczas generowania wersji. Jakikolwiek pomysł, ponieważ chciałbym skorzystać z najnowszych bibliotek.

+2

Zobacz Artem, który utrzymuje się do tej pory: https://github.com/artem-zinnatullin/RxJavaProGuardRules – akarnokd

Odpowiedz

7

Dodam następujący kod w pliku proguard.

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

To worked.Great ~! –

0

Należy spróbować z zestawu reguł

-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; 
    }