美文网首页
热更新Robust自动化补丁简单集成

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

作者: 天才小迷弟 | 来源:发表于2017-04-07 17:14 被阅读0次

    前言

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

    • 主要原理:在每个方法前加入一段代码,如果patch.jar存在,则加载patch.jar中的代码片段,否则执行原本的代码片段。(如下图)
      官方链接:http://tech.meituan.com/android_autopatch.html
    patching.png

    实际运用

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

    简单集成

    1. 添加依赖
      compile 'com.meituan.robust:robust:0.3.3'
    • 集成插件
      apply plugin: 'com.android.application'
      //制作补丁时将这个打开,auto-patch-plugin紧跟着
    com.android.application
    //apply plugin: 'auto-patch-plugin'
    apply plugin: 'robust'
    
    • 在整个项目的build.gradle加入classpath
     buildscript {
        repositories {
            jcenter()
        }
        dependencies {
             classpath 'com.meituan.robust:gradle-plugin:0.3.3'
             classpath 'com.meituan.robust:auto-patch-plugin:0.3.3'
       }
    }
    
    • 在app/robust下配置robust.xml文件
    • 将prouard-rules.pro下内容拷贝到项目中对应的prouard-rules.pro下
    • Androidmanifest.xml配置sdcard读写权限(一定要记得)

    正常打包

    注:必须打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自动化补丁方面详细的解释很少,有空笔者会再贴一篇文章进行详细的讲解。

    相关文章

      网友评论

          本文标题:热更新Robust自动化补丁简单集成

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