混淆打包后运行报错 withGenericBindingClass 报 java.lang.ArrayIndexOutOfBoundsException: le

245 阅读1分钟

发现问题

ViewBindUtil.kt 中的 withGenericBindingClass 报 java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

找到原因

企业微信截图_17198986567796.png

因为 xxxBinding.inflate  方法被混淆掉了,所以没正常 return ViewBinding,而是不断地遍历父类

企业微信截图_1719898825278.png

企业微信截图_17198988502293.png

直到遍历到祖先类只有一个泛型参数的时候,报 java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

解决方案

加入 ViewBinding 不被混淆的声明即可

# 保留 ViewBinding 生成的类和方法  
-keep class **.databinding.*Binding  
-keepclassmembers class **.databinding.*Binding {  
    public static ** inflate(...);  
    public static ** bind(...);  
}