美文网首页
MVPPlugin插件之混淆踩坑记录

MVPPlugin插件之混淆踩坑记录

作者: feisher | 来源:发表于2017-11-01 15:04 被阅读0次

    MVPPlugin简介

    原文介绍一键生成MVP相关代码,对于爱生活(懒)的码农来说简直是福音啊

    说明

    混淆会出现ClassCastException 在

    mPresenter= getInstance(this,1);
    

    但不是此插件框架问题

    分析

    那么到底是什么原因导致了这个错的,我调试的过程中曾一度以为是混淆的时候泛型导致的此问题,百度发现ClassCastException 也基本都是应为混淆中缺少

    -keepattributes Signature  
    

    导致的泛型转换问题!结果,添加后依然没有解决!!!mmp

    ………………(省略各种尝试n种)

    打断点依然发现不了,因为混淆后的打断点调试太头疼了,就是一个报错

    ClassCastException: ....Object cannot case to  ...BasePresenterImpl
    

    其实这里应该是返回的一个泛型,而这个泛型是方法

    public  <T>T getInstance(AppCompatActivity o, int i) {
            try {
                return ((Class<T>) ((ParameterizedType) (o.getClass()
                        .getGenericSuperclass())).getActualTypeArguments()[i])
                        .newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    

    泛型是方法的泛型中的类,由于这个方法存在于MVPBaseActivity ,如果继承的acitivity没有调用mPresenter中的方法。泛型就不能够进行有效的传递,导致此问题

    结论

    正常开发不会出现此问题!!!!既然用到mvp了肯定要在Presenter中有逻辑,测试只继承不写逻辑的情况又去做混淆的概率低到可以忽略,但是不幸的是我碰上了!!

    特此记录,引以为戒!

    相关文章

      网友评论

          本文标题:MVPPlugin插件之混淆踩坑记录

          本文链接:https://www.haomeiwen.com/subject/aacgpxtx.html