题外:最近赶完项目2.5版本,在开发过程中碰到了不少问题,为了后续不再踩同一个坑,趁发测了抽空把这些坑都整理一下。
问题:项目中使用RecyclerView展示能横向滑动的多个直播源,debug版本可正常使用,但一旦加入代码混淆后打包的release版本打开就会崩溃,提示java.lang.AbstractMethodError:abstract method "int android.support.v7.wedget.RecyclerView$Adapter.getItemCount()".
分析过程:一开始误以为是与RecyclerView相关联的support包的问题,版本兼容或者是代码混淆该包不正确。但经调试更换support包后该问题依然存在,并且如果不进行代码混淆即可运行,于是确定为代码混淆的问题。修改多次代码混淆配置均无果后,使用工具打开RecyclerView所在的jar后发现其使用的Adapter为抽象类,其中的getCount方法为抽象方法,此时意识到可能是继承的adapter中getCount方法被混淆所致。再次修改混淆配置后,问题得以解决。
解决方式:RecyclerView使用的Adapter不进行代码混淆即可。