2015-12-16 10 views
8

RxAndroid v1.1.0ライブラリで動作するProguardを取得できないようです。ProguardとRxAndroid V1.1.0

以前私はv1.0.1を使用していましたが、これは次のルールでうまくいきました。私は私のコードでRxAndroidを使用するとき

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

しかしrxAndroidのV1.1.0にアップグレードしても、それはGitHubののReadMe.txtに言うようRxJavaを含めた後、私はこの例外を取得します。

Caused by: java.lang.NoSuchFieldException: producerIndex 

だから私はGithubに関するいくつかの問題報告で人々が言っ​​たように、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.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

参照アルテムのルールセットを試してみてください:https://github.com/artem-zinnatullin/RxJavaProGuardRules – akarnokd

答えて

7

次のコードをproguardファイルに追加します。

-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; 
    } 
関連する問題