大家如果遇到开启混淆后,奔溃的问题加上如下代码即可解决问题
tanranran opened this issue · 6 comments
奔溃代码:
`
class TestActivity : BaseViewBindingActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
title = "提交成功"
}
}
`
未奔溃代码:
`
class TestActivity : BaseViewBindingActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
title = "提交成功"
getBinding().root.setBackgroundColor(Color.RED)
}
}
`
原因:
使用baseViewBind类的时候,如果未调用过getBinding()中的属性,在打release包时,编译器优化会优化掉泛型中的ViewBind类[因为在编译器看来该ViewBind中的类未被使用],导致找不到ViewBind类
解决办法:
-keep class * implements androidx.viewbinding.ViewBinding {*;}
AGP 8.0,默认开启android.enableR8.fullMode,在fullMode下,就算配置了混淆规则也不行 @DylanCaiCoding 有空帮忙看看
AGP 8.0,默认开启android.enableR8.fullMode,在fullMode下,就算配置了混淆规则也不行 @DylanCaiCoding 有空帮忙看看
遇到同样问题,AGP 8.0.1,即使配置了规则依然报错, @DylanCaiCoding 麻烦大佬看看
AGP 8.0,默认开启android.enableR8.fullMode,在fullMode下,就算配置了混淆规则也不行 @DylanCaiCoding 有空帮忙看看
试试这个,我亲测好使
-keep class * implements androidx.viewbinding.ViewBinding {*;}
-keepclassmembers class * implements androidx.viewbinding.ViewBinding {
public static ** bind(***);
public static ** inflate(...);
}
-keep,allowobfuscation,allowshrinking class 你的包名. BaseBindingActivity
AGP 8.0,默认开启android.enableR8.fullMode,在fullMode下,就算配置了混淆规则也不行 @DylanCaiCoding 有空帮忙看看
试试这个,我亲测好使
-keep class * implements androidx.viewbinding.ViewBinding {*;}
-keepclassmembers class * implements androidx.viewbinding.ViewBinding { public static ** bind(***); public static ** inflate(...); }
-keep,allowobfuscation,allowshrinking class 你的包名. BaseBindingActivity
问题已解决,十分感谢!