2015-12-16 7 views
8

मुझे लगता है कि प्रोजेवार्ड RxAndroid v1.1.0 लाइब्रेरी के साथ काम नहीं कर रहा है।प्रोगुआर्ड और आरएक्स एंड्रॉइड वी .1.1.0

पहले मैं v1.0.1 का उपयोग कर रहा हूं और यह निम्न नियम के साथ ठीक काम करता है।

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

हालांकि rxAndroid के v1.1.0 के उन्नयन और यह भी RxJava सहित के रूप में यह Github Readme.txt पर कहते हैं के बाद, मैं इस अपवाद जब भी मैं अपने कोड में RxAndroid का उपयोग मिलता है।

Caused by: java.lang.NoSuchFieldException: producerIndex 

तो मैं ने उन लोगों को तरह अधिक Proguard नियम 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.** 

यह काम नहीं करता है और जब मैं रिलीज बिल्ड उत्पन्न करता हूं तो लगातार क्रैश हो जाता है। कोई भी विचार जो मैं नवीनतम पुस्तकालयों का उपयोग करना चाहता हूं।

+2

Artem देखते हैं नियम-सेट जो तारीख तक रखा जाता है के साथ प्रयास करना चाहिए: https://github.com/artem-zinnatullin/RxJavaProGuardRules – akarnokd

उत्तर

7

मैं प्रोजेगार्ड फ़ाइल में निम्न कोड जोड़ता हूं।

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

यह worked.Great ~! –

0

आप

-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; 
    } 
संबंधित मुद्दे