热补丁(1): 补丁方案及原理 - clarkehe/Android GitHub Wiki
最近热补丁是android比较火的一个技术,BAT中的阿里和腾讯都提出了不止一种方案。针对各个方案,我们分析下其大概实现原理及方案。有些方案有多个实现,但原理都是一样,只分析有代表性的。
###QZone的安卓超级补丁(HotfixForAndroid): QZone的方案提的比较早,其原理是基于android处理分包的multiDex。
QZone的方案有两个问题:
- 要在Dalvik虚拟机上不报异常,要进行代码插桩。
http://androidxref.com/4.4.4_r1/xref/dalvik/vm/analysis/DexPrepare.cpp#1067
http://androidxref.com/4.4.4_r1/xref/dalvik/vm/oo/Resolve.cpp#118 - 要在ART的虚拟机中上不报异常,在补丁中对类的修改有一定规范。
开源的实现有:
https://github.com/dodola/HotFix
https://github.com/jasonross/Nuwa
https://github.com/bunnyblue/DroidFix
###微信的Tinker 如果说QZone的方案是增量补丁,Tinker就是全量补丁。
###淘宝的Dexposed
###支付宝的AndFix
【参考资料】
各大热补丁方案分析和比较
QZone安卓App热补丁动态修复技术介绍
http://blog.csdn.net/yueqian_scut/article/details/50939034
http://blog.csdn.net/lmj623565791/article/details/49883661
http://jiajixin.cn/2015/12/16/nvwa/
http://lirenlong.github.io/hotfix