android中的热修复

文章探讨了移动应用的热补丁方案,如腾讯的Tinker、阿里的Andfix(已淘汰但值得学习其原理)和美团的Robust,以及Qzone的超级补丁。AndFix通过在native层动态替换Java层的方法来修复bug,使用注解来标识需替换的方法。然而,类替换通常需要重启才能生效。
摘要由CSDN通过智能技术生成

热补丁方案,比较知名的有腾讯Tinker,阿里的Andfix,美团的Robust,以及Qzone的超级补丁方案。

注意,如果开启了混淆,要替换的是混淆后的类。比如我们的utils类。我们通过debug- > mapping.txt文件查看,被混淆成了a类。那么,我们的补丁包,则需要写a类。

大家可以看到,当使用类替换的方式,就必须重启,不能立即生效。

AndFix现在已经被淘汰了。但是可以学习下它的原理。它是在native层动态替换java层的方法,通过native层hoot java层的代码。

 AndFix使用自定义注解的方式来指定有bug的方法:

public class Test {
    @MethodReplace(class="com.example.myapplication.Test",method="test")
    public void test(){
    }
}

它的原理:

当拿到我的补丁包Test.使用类加载,拿到Test.class,然后再用反射再遍历这个类的所有方法。拿到Method对象获取到方法test。然后再反射拿到注解。拿到注解后,再拿到class以及method参数。然后就可以进行方法的替换。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值