android中的热修复

Posted 呼啸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中的热修复相关的知识,希望对你有一定的参考价值。

热补丁方案,比较知名的有腾讯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参数。然后就可以进行方法的替换。

 

以上是关于android中的热修复的主要内容,如果未能解决你的问题,请参考以下文章

android中的热更新

Android 热补丁技术——资源的热修复

Android热修复技术专题:来自微信淘宝支付宝QQ空间的热修复方案

Sophix及热修复原理介绍

Android热修复框架汇总整理(Hotfix)

一款超级简单易用的Android热修复框架 WandFix 使用详解