Kotlin抽象通用ProGuard

问题描述 投票:0回答:1

我有以下基类:

abstract class BaseFragment<T : BaseViewModel> : Fragment(), JobHolder {
    protected lateinit var viewModel: T
        private set

    protected fun provideViewModel(type: Class<T>) {
        viewModel = ViewModelProviders.of(this).get(type)
    }
}

和以下课程:

class SubjectEditor : BaseFragment<SubjectEditorViewModel>() {
    override fun onAttach(context: Context?) {
        super.onAttach(context)
        provideViewModel(SubjectEditorViewModel::class.java)
    }
}

但ProGuard抱怨道:

Warning: cz.x.ui.subjects.SubjectEditor: can't find referenced method 'void setViewModel(cz.x.ui.BaseViewModel)' in program class cz.x.ui.subjects.SubjectEditor

我为ProGuard尝试了一些-keep规则,但没有任何效果。什么是正确的解决方案?

android kotlin proguard
1个回答
0
投票

我想你不希望它被混淆,所以在这种情况下你应该把方法保留在抽象类中:

-keep public class {path to your class}.BaseFragment{
   private <methods>;
}

this link中有一个非常有用的Proguard指南阅读之后,你应该对你应该使用哪些规则更有信心。

我希望它有所帮助,否则让我知道!

© www.soinside.com 2019 - 2024. All rights reserved.