[CymChad/BaseRecyclerViewAdapterHelper]代码混淆后报类转换异常

2024-08-20 299 views
5

如题,继承BaseQuickAdapter和BaseViewHolder后,在Debug环境没问题,而在Release环境混淆后 直接报类转换异常,已经配置不混淆泛型了.但是还是报这个错误,有没有解决过的.

image

我是用的BaseQuickAdapter的Databinding使用方法.

回答

3

参考链接 http://www.jianshu.com/p/b343fcff51b0

自定义ViewHolder

需要继承BaseViewHolder

public class MovieViewHolder extends BaseViewHolder 然后修改adapter的第二个泛型为自定义的ViewHolder

public class DataBindingUseAdapter extends BaseQuickAdapter<Movie, DataBindingUseAdapter.MovieViewHolder> 注意:需要单独建一个外部类继承BaseViewHolder,否则部分机型会出现ClassCastException,如果是内部类的构造方法要是public,定义的那个类也最好是public。

混淆

-keep class com.chad.library.adapter.* { ; } -keep public class extends com.chad.library.adapter.base.BaseQuickAdapter -keep public class extends com.chad.library.adapter.base.BaseViewHolder -keepclassmembers class $ extends com.chad.library.adapter.base.BaseViewHolder {

(...); } 作者:陈宇明 链接:http://www.jianshu.com/p/b343fcff51b0 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2

你好,我就是参考wiki和demo进行配置的,混淆也一早就配置了.但是就会出现这个错误.后面即时我补了-keep public class extends com.chad.library.adapter.base.MyAdapter -keep public class extends MyViewHolder -keepclassmembers class $ extends MyViewHolder{ (...); } 还是无效,最终我是这样解决的.将自定义继承的ViewHolder,Adapter放在同一个包下,然后将包里的所有类混淆 -keep class com.mypackage.adapter.*{;} 这样才能解决.

1

@lhalcyon 版本号是?

7

compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'

0

升级最新版试试

5

...暂时不升级了,我那样混淆解决了问题.生产版本出了这个问题,吓了我一身冷汗. 尴尬的是发生产测试包的时候,列表没有数据,所以没有测出来.等列表有数据的时候 ,App闪退了.-_-b

3

行,有空你可以升级一下试试,我们这边也会针对你的问题进行处理的。要是最新版本还有问题可以再提,实在不好意思。

8

我用的2.9.46版本 也是混淆后抛出了类型转换异常

2

有兄弟解决了吗 ?我的是用了 databinding 的 BaseDataBindingHolder