Android热修复方案浅析

热修复就是动态下发代码,它可以使开发者在不发布新版本的情况下,修复 BUG 和发布功能, 避免长时间的审核等待以及多次被拒造成的成本,达到及时解决问题和发布功能的目的

一. 实现方案

目前热修复的实现套路基本上离不开以下两种:


二. 方案对比分析

以下是Tinker、QZone超级补丁、AndFix、Robust对比图。


AndFix作为native解决方案,首先面临的是稳定性与兼容性问题,更重要的是它无法实现类替换,它是需要大量额外的开发成本的;

Robust兼容性与成功率较高,但是它与AndFix一样,无法新增变量与类只能用做的bugFix方案;

QZone超级补丁方案可以做到发布产品功能,但是它主要问题是插桩带来Dalvik的性能问题,以及为了解决Art下内存地址问题而导致补丁包急速增大的。

特别是在Android N之后,由于混合编译的inline策略修改,对于市面上的各种方案都不太容易解决。而Tinker热补丁方案不仅支持类、So以及资源的替换,它还是2.X-8.X(1.9.0以上支持8.X)的全平台支持。利用Tinker我们不仅可以用做bugfix,甚至可以替代功能的发布。

更重要的是,tinker方案目前是bugly热修复方案,这样子作为一个初创企业,只需要集成bugly sdk即可拥有强有力的热修复能力以及版本发布能力,同时兼具客户端bug收集等基本功能,极大的减少了企业的人力成本。

参考文档:

  1. bugly文档中心:

    https://bugly.qq.com/docs/

  2. buglyDemo地址:

    https://github.com/BuglyDevTeam/Bugly-Android-Demo

  3. tinker地址:

    https://github.com/Tencent/tinker

  4. AndFix地址:

    https://github.com/alibaba/AndFix

  5. Robust地址:

    https://github.com/Meituan-Dianping/Robust

  6. QZone超级补丁:

    https://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731290eef12ad0d17f39d4a

你可能感兴趣的:(Android热修复方案浅析)