ViewBindingKTX icon indicating copy to clipboard operation
ViewBindingKTX copied to clipboard

大家如果遇到开启混淆后,奔溃的问题加上如下代码即可解决问题

Open tanranran opened this issue 2 years ago • 6 comments
trafficstars

奔溃代码: ` class TestActivity : BaseViewBindingActivity<TestBinding>() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    title = "提交成功"
}

} ` 未奔溃代码:

` class TestActivity : BaseViewBindingActivity<TestBinding>() {

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

tanranran avatar Mar 17 '23 06:03 tanranran

AGP 8.0,默认开启android.enableR8.fullMode,在fullMode下,就算配置了混淆规则也不行 @DylanCaiCoding 有空帮忙看看

AIlll avatar May 30 '23 07:05 AIlll

AGP 8.0,默认开启android.enableR8.fullMode,在fullMode下,就算配置了混淆规则也不行 @DylanCaiCoding 有空帮忙看看

遇到同样问题,AGP 8.0.1,即使配置了规则依然报错, @DylanCaiCoding 麻烦大佬看看

klxiaoniu avatar Jun 01 '23 08:06 klxiaoniu

AGP 8.0,默认开启android.enableR8.fullMode,在fullMode下,就算配置了混淆规则也不行 @DylanCaiCoding 有空帮忙看看

@AIlll @klxiaoniu

试试这个,我亲测好使

-keep class * implements androidx.viewbinding.ViewBinding {*;}

-keepclassmembers class * implements androidx.viewbinding.ViewBinding { public static ** bind(***); public static ** inflate(...); }

-keep,allowobfuscation,allowshrinking class 你的包名. BaseBindingActivity

tanranran avatar Jun 08 '23 16:06 tanranran

AGP 8.0,默认开启android.enableR8.fullMode,在fullMode下,就算配置了混淆规则也不行 @DylanCaiCoding 有空帮忙看看

@AIlll @klxiaoniu

试试这个,我亲测好使

-keep class * implements androidx.viewbinding.ViewBinding {*;}

-keepclassmembers class * implements androidx.viewbinding.ViewBinding { public static ** bind(***); public static ** inflate(...); }

-keep,allowobfuscation,allowshrinking class 你的包名. BaseBindingActivity

问题已解决,十分感谢!

klxiaoniu avatar Jun 08 '23 16:06 klxiaoniu

其实把R8的完整模式关了也无伤大雅

ChawLoo avatar Jan 24 '24 01:01 ChawLoo

@ChawLoo 项目大了,对包体积有要求

tanranran avatar Apr 16 '24 03:04 tanranran