簡體   English   中英

Android架構組件 - ViewModel Observable和Proguard

[英]Android Architecture Components - ViewModel Observable & Proguard

我無法讓ViewModel組件與Proguard一起工作。 我已經不得不添加以下內容以防止由於NoSuchMethodException導致崩潰:init()

-keep class com .... SlideshowViewModel {*;}

但是,我在活動中的觀察者沒有收到任何數據。 這個工作正常,直到我啟用Proguard,所以我知道Proguard是原因,我只是不知道為什么(新手Proguardian在這里)。 我需要添加什么規則才能使可觀察量有效?

我的ViewModel(Kotlin)中有以下內容

val currentItem = MediatorLiveData<MediaItem>()

....后來...

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

在我收到的日志中:D / SlideshowViewModel:設置下一張圖片:18中的0

但是在onChanged Observable中沒有任何東西被解雇。

發現於: https//issuetracker.google.com/issues/62113696

它應盡快修復(尚未在alpha3中修復)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM