美团robust接入

美团Robust的GitHub地址

https://github.com/Meituan-Dianping/Robust

导入

1、Module的build.gradle中

apply plugin: 'com.android.application'
//制作补丁时将这个打开,auto-patch-plugin紧跟着com.android.application
//apply plugin: 'auto-patch-plugin'
apply plugin: 'robust'

...


implementation 'com.meituan.robust:robust:0.4.90'

Project的build.gradle中

...
dependencies {
        ...
        classpath 'com.meituan.robust:gradle-plugin:0.4.90'
        classpath 'com.meituan.robust:auto-patch-plugin:0.4.90'

    }

2、把美团demo中的一些文件拷贝到你的app中

在你的APP根目录下面(src同级目录中)新建一个 robust 文件夹

PatchManipulateImp、RobustCallBackSample  2个java类拷贝到你的APP中

把Demo中的APP根目录(src同级目录中)的robust.xml文件拷贝到你APP的相同位置

 

3、修改配置代码

robust.xml文件中修改

<!--需要热补的包名或者类名,这些包名下的所有类都被会插入代码-->
<!--这个配置项是各个APP需要自行配置,就是你们App里面你们自己代码的包名,
    这些包名下的类会被Robust插入代码,没有被Robust插入代码的类Robust是无法修复的-->
<packname name="hotfixPackage">
        <name>com.lahm.blx</name>
    </packname>

我的App包名:com.lahm.blx。代码大部分在包里面

<!--不需要Robust插入代码的包名,Robust库不需要插入代码,如下的配置项请保留,还可以根据各个APP的情况执行添加-->
    <exceptPackname name="exceptPackage">
        <name>com.lahm.blx.utils</name>
    </exceptPackname>

我的com.lahm.blx下面有个utils包,这个包下面的代码,我确定不需要热修复,所以这里设置。建议这里不修改,此处只是为了说明有这个功能

<!--项目是否支持progaurd-->
  <proguard>false</proguard>

是否混淆,此处我设置为false。默认为true

 

PatchManipulateImp代码修改

patch.setLocalPath(Environment.getExternalStorageDirectory().getPath()+ File.separator+"robust"+File.separator + "patch");
...
patch.setPatchesInfoImplClassFullName("com.lahm.blx.PatchesInfoImpl");

补丁文件的路径,建议根据app实际情况设定。

setPatchesInfoImplClassFullName我设置为:包名+PatchesInfoImpl

 

最后在合适的地方加入下面代码

PatchExecutor(applicationContext, PatchManipulateImp(), RobustCallBackSample()).start()

 

打包

 buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

混淆关闭,需要跟上面robust.xml中的设定一致

签名打包完成后,真机或者模拟器安装apk包

然后

找到 app/build/outputs/robust/methodsMap.robust文件,复制到上面新建的 robust 文件夹中

如果混淆开启,则会有app/build/mapping/release/mapping.txt文件,也一同复制到robust 文件夹中

 



补丁

现在我们发现安装的apk中有点问题,需要在某个Activity的onCreate中新增个方法来解决

    @Modify
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        textRobust()
    }

    @Add
    fun textRobust(){
        ToastUtils.showShortTip("热修复增加")
    }

@Modify修改   @Add 新增

 

放开 apply plugin: 'auto-patch-plugin'

apply plugin: 'com.android.application'
//制作补丁时将这个打开,auto-patch-plugin紧跟着com.android.application
apply plugin: 'auto-patch-plugin'
apply plugin: 'robust'

重新打包

提示Cause: auto patch end successfully打包失败,但是补丁成功

查看app/build/outputs/robust,多个2个文件。patch.jar就是补丁文件

把patch.jar导入到真机or模拟器中的 PatchManipulateImp设置的setLocalPath中,再运行app即可

实际开发中怎么导入,自行跟服务端商议

 

注意:如果App先执行了

PatchExecutor(applicationContext, PatchManipulateImp(), RobustCallBackSample()).start()

再导入的补丁包,则App不会有任何反应,除非重新执行此方法

其他的注意事项请关注官方的GitHub

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值