0%

Mock-Method-Debug

  • 背景
    • 研发过程中,有些场景需要来回切换,切换意味着配置云控或者本地修改代码重新打包
    • 本地修改代码,有可能造成测试代码提交到服务器,引发严重后果
    • 配置云控,对于不熟悉的研发或者云控配置数量多,可能会浪费更长时间
  • 适用场景
    • VIP和非VIP切换
    • 首页四宫格和六宫格的切换等
  • 使用方式
    • build.gradle
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      //根目录
      buildscript {
      dependencies {
      classpath 'com.github.JuneLeo.mock-method:mock-method-plugin:1.1.6'
      }
      }
      // app 项目
      apply plugin: 'MockPlugin'
      mock {
      packages = [
      'com.mock.sample' //mock方法的包名集合
      ]
      dependencyEnable = true //是否使用gradle中的依赖管理,默认使用
      }
      dependencies {
      implementation 'com.github.JuneLeo.mock-method:mock-method-android:1.1.6'
      }

    • @MockMethod (基本数据类型和String,values集合用逗号隔开)
      @MockMethod(defaultValue = "修改为a", values = "修改为a,修改为b")
      public String a() {
          return "我是a方法的返回值 - 设置后点击我改变值";
      }
      
    • 控制返回值界面
  • 思考
    • Mock方法:客户端可以直接修改返回值
    • 简单快捷:注解,1-收集数据,2-注入代码
    • 收集数据时机,高效收集
    • 注入代码时机,注入框架选择
  • 原理
    • javac task :根据注解自动生成类,类中保存注解数据信息
    • Transform task :class -> dex 注入代码