hegaojian / JetpackMvvm

:chicken::basketball:一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
https://github.com/hegaojian/JetpackMvvm
Apache License 2.0
3.13k stars 610 forks source link

空ViewModel并开启混淆时报错 #67

Closed longxuewei closed 3 years ago

longxuewei commented 3 years ago

如果 写一个 空的 ViewModel 例如:

class EmptyViewModel : BaseViewModel(){

}

同时再写一个Activity,并且使用上面定义的EmptyViewModel且不调用ViewModel的任何方法:

class TestActivity : BaseActivity<EmptyViewModel>() {

}

这样在混淆模式下将会爆错崩溃,具体出错定位在GetViewModelExtKt.class类的第16行代码:

/**
 * 获取当前类绑定的泛型ViewModel-clazz
 */
@Suppress("UNCHECKED_CAST")
fun <VM> getVmClazz(obj: Any): VM {
    // 这句代码!!!
    return (obj.javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as VM
}

希望作者大佬,有时间可以修复一下 !

hegaojian commented 3 years ago

你需要再混淆文件中添加androidX的混淆 例如:

-keep class com.google.android.material.** {*;}
-keep class androidx.** {*;}
-keep public class * extends androidx.**
-keep interface androidx.** {*;}
-dontwarn com.google.android.material.**
-dontnote com.google.android.material.**
-dontwarn androidx.**
longxuewei commented 3 years ago

好得,我试试! 👍