zoukankan      html  css  js  c++  java
  • 美团热修复Robust的踩坑之旅-使用篇

      最近需要在项目中使用热修复框架,在这里以美团的Robust为主写一篇文章总结一下学习的过程。

      一直认为要学习一个框架的原理,首先需要让他跑起来,从效果反推回去,这样更容易理解。  

    一、美团Robust的使用

      首先我们在编写代码前需要做如下准备

      配置文件读写权限,6.0以上需要手动获取

      

       <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

      在project的gradle文件中编写如下代码

      

      在module的gradle文件中编写如下代码

      

      

      同时我们将从github上下载的美团Robust的例子中的robuts.xml复制到我们的项目中

      将下面两个地方改为我们的包名,其他地方不建议在新手测试的时候进行修改。

      

      

      同时要记得将App的混淆打开,原因在后面会提到

      

        到目前为止,我们可以开始代码方面的编写了

      首先给大家看一下目录结构

      

      首先我们看MainActivity的代码

      

      界面很简单,一个TextView和两个Button,图片在后面

           这里面重要的就是这个newPatchExecutor,传入了我们写的PatchManpulateImp,和一个回调。

      我们接下来看PatchManpulateImp这个类。

      这里我们可以将美团的PatchManpulateImp类复制下来,稍微修改一下就可以了

      

      这里改为“你的包名”+PatchesInfoImpl即可

      

      RobustActivity里面的代码很简单如下

      

      这里全部完成后我们可以开始生成apk了,这里要注意要生成带签名的apk-release。

      

      这里要注意的是生成带签名的release apk时,要同时勾选v1,v2。不然一会通过adb命令想genymotion安装App时会报错。

      生成Apk后我们通过adb命令将apk安装到模拟器上,这里有的同学可能发现adb无法使用,需要在系统中设置环境变量,adb工具在androidsdk中自带,可以在sdk中去找。

      

      

      接下来是补丁生成的流程

      生成apk后我们可以看到Robust给我们生成了如下文件。新建一个与src同级的文件夹robust,将这两个文件复制过去,这里要注意我们在前面如果没配置混淆的话,这两个文件是不会出现的。

      

      

      将我们前面的gradle文件打开,修改如下

      

      然后修改RobustActivity中的代码如下

      

      在terminal中调用如下命令

      gradlew clean assembleRelease --stacktrace --no-daemon

      生成补丁包

      这里会build失败,不影响,有下列即为成功,我们可以看到这里已经生成了补丁包

      

      现在我们把补丁包push到我们的模拟器中

      这里面我们push jar包到我们在PatchManpulateImp中设置的地址的前一级

     

      现在我们开始运行程序,先点击加载jar包,这里要注意Anroid6.0以上要手动开启读取写入权限。

      

      

      这样我们就成功了。若是运行失败,建议去看一看打印出的异常,具体分析原因。

    二、小结

      在接下来的分析中,将会分析美团Robust的原理。

      

      

      

      

      

  • 相关阅读:
    查询,创建,扩充表空间&&impdp--------表空间大全
    TOJ3660家庭关系(并查集+hash+图的连通性)
    [置顶] iptables 性能 测试
    CSU1312:榜单(模拟)
    uvalive 2326
    TOJ 2732存钱计划(三)(单源最短路)
    CSU1315:全场最水题之陈兴老师与比赛
    【图像处理】最临近插值和双线性内插值算法实现比较
    poj 3090 Visible Lattice Points 法利系列||通过计
    美丽的谎言(王愿共勉)
  • 原文地址:https://www.cnblogs.com/yrstudy/p/8973394.html
Copyright © 2011-2022 走看看