android - Proguard 和 RxAndroid V1.1.0

标签 android rx-java rx-android

我似乎无法让 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/

相关文章:

java - onDateSet 不会从平板电脑上的 DatePickerDialog 调用

android - 在 Actionbarsherlock 中更新 Actionbar 菜单

java - RxJava2 过滤器列表<对象>

android - RxAndroid 中如何观察网络变化

android - 如何知道在电子邮件撰写 Activity 中是否按下了发送/放弃/取消按钮 - Android

android - 将 Android 库添加到 Android Studio 0.3.6 上的现有项目

java - 调用对象一次变为非空

java - 改造 + RxJava : How to request for multiple request in order and assemble results in single Observable?

rx-java - 一个操作符默认不对任何特定的 Scheduler 进行操作是什么意思

android - 使用 RxAndroid 调度