2017-12-19 14 views
0

Proguardでビルドすると、Observable上で 'Observableで参照クラスが見つかりません'という警告が表示されます。Proguard警告:Observableで参照されているクラスが見つかりません

しかし、私はObservableを多くの場所で使用していますが、警告点は以下のコードだけです。

viewModel.data.observe(this, Observer<Boolean> { 

    // Warning: can't find referenced class 
    Single.fromCallable { 
     updateSomething() 
    } 
    .delay(2, TimeUnit.SECONDS) 
    .subscribe({}, { 
     it.printStackTrace() 
    }) 
}) 

多分ViewModelに関連していますか?私が 'Single.fromCallable ...'ブロックをコメントアウトすると、警告なしにビルドできます。

この問題を解決するにはどうすればよいですか?

[編集]私の現在のproguard-rules.pro

############################################################ 
## Retrofit2 
############################################################ 
-dontwarn retrofit2.** 
-keep class retrofit2.** { *; } 
-keepattributes Signature 
-keepattributes Exceptions 
-dontwarn javax.annotation.** 
-keepclasseswithmembers class * { 
    @retrofit2.http.* <methods>; 
} 

############################################################ 
## okhttp3 
############################################################ 
-dontwarn okhttp3.** 
-dontwarn okio.** 

############################################################ 
## For picasso 
############################################################ 
-dontwarn com.squareup.okhttp.** 

############################################################ 
## For com.caverock:androidsvg 
############################################################ 
-dontwarn com.caverock.androidsvg.** 

############################################################ 
## For Gson 
############################################################ 
-keep class com.google.** {*;} 
-keep interface com.google.** {*;} 

# For using GSON @Expose annotation 
-keepattributes *Annotation* 

# Gson specific classes 
-dontwarn sun.misc.** 
#-keep class com.google.gson.stream.** { *; } 

# Application classes that will be serialized/deserialized over Gson 
-keep class com.google.gson.examples.android.model.** { *; } 

# Prevent proguard from stripping interface information from TypeAdapterFactory, 
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) 
-keep class * implements com.google.gson.TypeAdapterFactory 
-keep class * implements com.google.gson.JsonSerializer 
-keep class * implements com.google.gson.JsonDeserializer 

############################################################ 
## For NonSwipeableViewPager 
############################################################ 
-keep class android.support.v4.view.ViewPager { *; } 

############################################################ 
## For RxJava 
############################################################ 
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { 
    long producerIndex; 
    long consumerIndex; 
} 

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

-dontnote rx.internal.util.PlatformDependent 

エラーメッセージ、

警告:com.test/view.list.PhotoListFragment $ observeUpdates $ 2 $ 1 $ 1 $ 3: 参照先のクラスが見つかりません com.test/view.list.PhotoListFragment $ observeUpdates $ 2 $ 1警告: com.test/view.list.PhotoListFragment $ observeUpdates $ 2 $ 1 $ 1 $ 3: 参照クラスが見つかりません com.test/view.list.PhotoListFragment $ observeUpdates $ 2 $ 1警告: com.test/view.list.PhotoListFragment $ observeUpdates $ 2 $ 1 $ 1 $ 4:できません。 com.test/view.list.PhotoListFragment $ observeUpdates $ 2 $ 1 : com.test/view.list.PhotoListFragment $ observeUpdates $ 2 $ 1 $ 1 $ 4ない は参照クラス com.test/view.list.PhotoListFragment $ observeUpdates $ 1 $ 2

observeUpdates()メソッドが含まれて見つけることができます上記のコード。

答えて

0

あなたはProGuardの中でこのラインを維持しようとすることができます

-keepnames class rx.Single 



#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(); 
} 

-keep class rx.internal.util.unsafe.** { 
    *; 
} 
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { 
    long producerIndex; 
    long consumerIndex; 
} 
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { 
    long producerNode; 
    long consumerNode; 
} 
+0

私はそれを試みたが、まだ運... –

+0

あなたはエラーのスクリーンショットを維持していないし、また、あなたのProGuardのファイルができますか? – ABDevelopers

+0

あなたのレビューのために私の質問が更新されました。どうぞご覧ください。 –

関連する問題