【问题标题】:Proguard and RxAndroid V1.1.0Proguard 和 RxAndroid V1.1.0
【发布时间】:2015-12-16 15:04:45
【问题描述】:

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

这不起作用,当我生成发布版本时,我不断地遇到崩溃。任何想法,我想使用最新的库。

【问题讨论】:

标签: android rx-java rx-android


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你应该试试

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

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      相关资源
      最近更新 更多