无法使用RxJava创建发布 - 构建作为依赖项和proguard规则

时间:2017-09-12 10:43:45

标签: android android-proguard

我在依赖项中使用'compile 'io.reactivex:rxjava:1.3.1'

我已启用minifyEnabled true来混淆代码。

但我收到了以下错误 -

Warning:rx.internal.schedulers.NewThreadWorker: can't find referenced method 'java.util.concurrent.ConcurrentHashMap$KeySetView keySet()' in library class java.util.concurrent.ConcurrentHashMap

我已经为rxjava添加了proguard规则,如下所示 -

-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.** {
    long producerIndex;
    long consumerIndex;
}

我也试过compile 'com.artemzin.rxjava:proguard-rules:1.3.1.0',但我仍然在顶部提到相同的问题。

3 个答案:

答案 0 :(得分:2)

这是1.3.1中的错误,由版本1.3.2中的PR修复。

答案 1 :(得分:1)

不知道ProGuard规则解决了这个问题,但如果没有必要使用1.3.1,您现在可以使用旧版本1.3.0。版本1.3.1仅包含细微更改,1.3.0这些ProGuard规则正常运行。

答案 2 :(得分:0)

尝试在proguard文件中添加此规则

-dontwarn java.util.concurrent.**