美文网首页
热修复二(Tinker)

热修复二(Tinker)

作者: aafa41d78d15 | 来源:发表于2017-09-07 11:29 被阅读0次

    热修复方案目前来讲,稳定性最好当属Tinker了。它已经运行在数亿台安卓设备上了。

    它的接入方式可以参考官方github地址,点击wiki,里面有详细的接入方式。同时,参考文章也提供了很多接入的信息,可以一起看看,有助于快速接入。

    原理

    image.png

    可以看出:

    tinker将old.apk和new.apk做了diff,拿到patch.dex,然后将patch.dex与本机中apk的classes.dex做了合并,生成新的classes.dex,运行时通过反射将合并后的dex文件放置在加载的dexElements数组的前面。

    运行时替代的原理,其实和Qzone的方案差不多,都是去反射修改dexElements。

    两者的差异是:Qzone是直接将patch.dex插到数组的前面;而tinker是将patch.dex与app中的classes.dex合并后的全量dex插在数组的前面。

    tinker这么做的目的还是因为Qzone方案中提到的CLASS_ISPREVERIFIED的解决方案存在问题;而tinker相当于换个思路解决了该问题。

    接下来我们就从代码中去验证该原理。

    参考文章

    https://github.com/Tencent/tinker/wiki
    http://blog.csdn.net/lmj623565791/article/details/54882693
    http://blog.csdn.net/a750457103/article/details/52815096

    相关文章

      网友评论

          本文标题:热修复二(Tinker)

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