码迷,mamicode.com
首页 > 其他好文 > 详细

线上热修复技术

时间:2017-05-06 23:00:39      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:目的   tin   and   load   lan   list   base   阿里   lib   

没学会、没接触的时候感觉很难,学会了也就没那么难

1.前言

技术分享

技术分享

 

2.相关技术

  • 阿里巴巴  AndFix、Dexposed
  • QQ空间  超级补丁

 

  •  微信  Tinker

(一)AndFix与hotFix技术

AndFix不同于QQ空间超级补丁技术和微信Tinker通过增加或替换整个DEX的方案,提供了一种运行时在Native修改Filed指针的方式,实现方法的替换,达到即时生效无需重启,对应用无性能消耗的目的。

技术分享

 

(二) 超级补丁

超级补丁技术基于DEX分包方案,使用了多DEX加载的原理,大致的过程就是:把BUG方法修复以后,放到一个单独的DEX里,插入到dexElements数组的最前面,让虚拟机去加载修复完后的方法。

修复的步骤为:

1. 通过获取到当前应用的Classloader,即为BaseDexClassloader

2. 通过反射获取到他的DexPathList属性对象pathList

3. 通过反射调用pathList的dexElements方法把patch.dex转化为Element[]

4. 两个Element[]进行合并,把patch.dex放到最前面去

5. 加载Element[],达到修复目的

(三) Tinker

 微信针对QQ空间超级补丁技术的不足提出了一个提供DEX差量包,整体替换DEX的方案。主要的原理是与QQ空间超级补丁技术基本相同,区别在于不再将patch.dex增加到elements数组中,而是差量的方式给出patch.dex,然后将patch.dex与应用的classes.dex合并,然后整体替换掉旧的DEX文件,以达到修复的目的

技术分享

参考博客http://www.cnblogs.com/alibaichuan/p/5863616.html

线上热修复技术

标签:目的   tin   and   load   lan   list   base   阿里   lib   

原文地址:http://www.cnblogs.com/fanfusuzi/p/6818732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!