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中的热修复的主要内容,如果未能解决你的问题,请参考以下文章