2015-12-16 28 views
8

Proguard'ın RxAndroid v1.1.0 kitaplığı ile çalışmasını sağlayamıyorum.Proguard ve RxAndroid V1.1.0

Daha önce v1.0.1 kullanıyorum ve bu aşağıdaki kuralla birlikte iyi çalıştı. Benim kodunda RxAndroid her kullandığınızda

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

Ancak rxAndroid ait V1.1.0 yükseltme ve ayrıca Github ReadMe.txt üzerinde söylediği gibi RxJava dahil ettikten sonra, bu özel durum olsun.

Caused by: java.lang.NoSuchFieldException: producerIndex 

yüzden insanlar gibi daha Proguard kuralları Github konu raporların bazılarında söylediler ekledi.

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

Bu işe yaramaz ve serbest bırakma yapılarını oluşturduğumda sürekli olarak çökmeleri yakalarım. En son kütüphaneleri kullanmak istediğim gibi bir fikrim var.

+2

Bkz Artem en ruleset ile denemelisiniz: https://github.com/artem-zinnatullin/RxJavaProGuardRules – akarnokd

cevap

7

Şu kodu proguard dosyasına ekliyorum.

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

O worked.Great ~! –

0

tarihe kadar tutulur

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