美文网首页
Android热修复方案

Android热修复方案

作者: 田_19ab | 来源:发表于2020-11-04 15:51 被阅读0次
    热修复.png

    热补丁方案有很多,其中比较出名的有腾讯Tinker、阿里的AndFix、美团的Robust以及QZone的超级补丁方案。

    一、AndFix
    在native动态替换java层的方法,通过native层hook java层的代码。


    AndFix.jpg image.png
    特点是:即时生效。
    使用到的技术有:注解、NDK。
    github地址:https://github.com/alibaba/AndFix

    二、Robust
    对每个函数都在编译打包阶段自动的插入了一段代码。类似于代理,将方法执行的代码重定向到其他方法中。

    Robust.png
    image.png
    原理:https://tech.meituan.com/2016/09/14/android-robust.html
    特点是:即时生效。
    使用到的技术有:注解、插桩、代理。
    github地址:https://github.com/Meituan-Dianping/Robust

    三、Tinker
    Tinker通过计算对比指定的Base Apk中的dex与修改后的Apk中的dex的区别,补丁包中的内容即为两者差分的描述。

    运行时将Base Apk中的dex与补丁包进行合成,重启后加载全新的合成后的dex文件。

    Tinker.png
    特点是:重启生效。
    使用到的技术有:反射、类加载、DexDiff。
    github地址:https://github.com/Tencent/tinker

    四、Qzone
    QQ空间基于的是dex分包方案。把BUG方法修复以后,放到一个单独的dex补丁文件,让程序运行期间加载dex补丁,执行修复后的方法。如何做到这一点?

    在Android中所有我们运行期间需要的类都是由ClassLoader(类加载器)进行加载。
    因此让ClassLoader加载全新的类替换掉出现Bug的类即可完成热修复。


    Qzone.png

    特点是:重启生效。
    使用到的技术有:反射、类加载。

    相关文章

      网友评论

          本文标题:Android热修复方案

          本文链接:https://www.haomeiwen.com/subject/zaugvktx.html