2017-06-27 7 views
5

ViewModelコンポーネントをProguardと連携させるのに問題があります。私はすでにによるないNoSuchMethodExceptionにクラッシュを防ぐために、以下を追加する必要がありました:INIT()Androidアーキテクチャのコンポーネント - ViewModel Observable&Proguard

-keepクラスCOM .... SlideshowViewModel {*;}

しかし、活動における私のオブザーバーは受け付けておりません任意のデータ。これはProguardを有効にするまでうまく動作するので、Proguardが理由であることを知っているので、私はちょうど理由を知らない(Proguardianの初心者)。オブザーバブルを動作させるにはどのようなルールを追加する必要がありますか?

私は

 Timber.d("Setting next image: " + position + " out of " + mediaItemList.size) 
     currentItem.value = mediaItemList[position] 

とアクティビティ(Java)の

viewModel.getCurrentItem().observe(this, new Observer<MediaItem>() { 
     @Override 
     public void onChanged(@Nullable final MediaItem mediaItem) { 
      Timber.d("Activity received new item"); 
     } 
    }); 

で...後で....

val currentItem = MediatorLiveData<MediaItem>() 

私のViewModel(Kotlin)に以下の持っていますログを受信しました: D /スライドショービューモデル:次の画像を設定:0 out of 0

しかし、onChanged Observableでは何も起こらない。

答えて

5

は上のそれを見つけた:https://issuetracker.google.com/issues/62113696それはすぐに修正されなければならない

しかし

## Android architecture components: Lifecycle 
# LifecycleObserver's empty constructor is considered to be unused by proguard 
-keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver { 
    <init>(...); 
} 
# ViewModel's empty constructor is considered to be unused by proguard 
-keepclassmembers class * extends android.arch.lifecycle.ViewModel { 
    <init>(...); 
} 
# keep Lifecycle State and Event enums values 
-keepclassmembers class android.arch.lifecycle.Lifecycle$State { *; } 
-keepclassmembers class android.arch.lifecycle.Lifecycle$Event { *; } 
# keep methods annotated with @OnLifecycleEvent even if they seem to be unused 
# (Mostly for LiveData.LifecycleBoundObserver.onStateChange(), but who knows) 
-keepclassmembers class * { 
    @android.arch.lifecycle.OnLifecycleEvent *; 
} 
(まだアルファ3で)
関連する問題