我似乎无法让Proguard使用RxAndroid v1.1.0库。

以前我一直在使用v1.0.1,并且在以下规则下工作正常。

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

但是,升级到rxAndroid v1.1.0并包括Github ReadMe.txt上所述的RxJava之后,只要在代码中使用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.**

这不起作用,并且在生成发行版时会不断崩溃。我想使用最新库的任何想法。

最佳答案

我在proguard文件中添加以下代码。

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

关于android - Proguard和RxAndroid V1.1.0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34315402/

10-09 01:14