热更新Robust自动化补丁简单集成

2017-04-07  本文已影响0人  天才小迷弟

前言

美团Robust开源,并且支持自动化补丁,果断换掉公司的AOP patch方案。

patching.png

实际运用

  1. apk大小
    集成robust前:6.9Mb 后:7.6Mb
  2. 优势:及时生效,rom影响(小),兼容性(99.8%)
    劣势:不能修复.so/res/等文件

简单集成

  1. 添加依赖
    compile 'com.meituan.robust:robust:0.3.3'
com.android.application
//apply plugin: 'auto-patch-plugin'
apply plugin: 'robust'
 buildscript {
    repositories {
        jcenter()
    }
    dependencies {
         classpath 'com.meituan.robust:gradle-plugin:0.3.3'
         classpath 'com.meituan.robust:auto-patch-plugin:0.3.3'
   }
}

正常打包

注:必须打release包,debug中插入逻辑需要在robust.xml中配置

  1. 调用命令(./gradlew clean assembleRelease --stacktrace --no-daemon)打包一个release.apk
  2. 保存outputs/mapping/mapping.txt 以及outputs/robust/methodsMap.robust文件 (为了记住上次打包时混淆映射的.class文件,DexClass.load("映射到该文件")) 到app/robust/

打补丁姿势:

  1. build.gradle下的auto-patch-glugin插件开启
  2. 在修改的位置方法前插入 @Modify
  3. 重新使用命令打包(会Build Failed构建失败,但是outputs/robust/下会出现一个patch.jar)文件
  4. adb push /Users/a092/Downloads/Robust-test/app/build/outputs/robust/patch.jar /sdcard/robust/patch.jar调用该命令复制到手机对应目录(实际项目中,通过云端进行push)
  5. 加载patch.jar
    5.1 调用该方法new PatchExecutor(getApplicationContext(), new PatchManipulateImp(), new RobustCallBack() ).start();加载patch

说明:PatchManipulateImpl extend PatchManipulate 实现三个方法(具体参考官方demo的PatchManipulateImpl)
RobustCallBack() 该类是补丁加载时回调的操作信息


发现目前Robust自动化补丁方面详细的解释很少,有空笔者会再贴一篇文章进行详细的讲解。

上一篇下一篇

猜你喜欢

热点阅读