我们开发时常常要考虑的一些问题。
开发上线的版本能保证不存在Bug么? 修复后的版本能保证用户都及时更新么? 如何最大化减少线上Bug对业务的影响?
热修复技术帮助我们解决了很多问题,带来的优势不言而喻。不知道各位对于热修复技术掌握如何?
热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷。
本文将从以下方面为大家详解热修复技术:
-
什么是热修复?
-
热修复的优势和不足?
-
热修复框架分类
-
技术原理及特点
-
实际案例解析
-
热修复技术选择
1、什么是热修复?
热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷。
2、热修复的优势和不足?
优势:
无需重新发布版本;用户无感知修复,代价小;修复成功率高,把损失降到最低。
不足:
- 补丁只能针对单一客户端版本,随着版本差异变大补丁体积也会增大;
- 补丁不能支持所有的修改,例如AndroidManifest;
- 补丁无论对代码还是资源的更新成功率都无法达到100%。
3、常用热修复框架
Dexposed: 阿里= >开源=>实时修复
Andfix:阿里=>开源= >实时修复
阿里百川HotFix:阿里= >未开源=>实时修复
Qzone超级补丁: QQ空间=>未杆源=>冷启动修复
QFix: 手Q团队=>开源=>冷启动修复
Robust: 美团= >开源= >实时修复
Nuwa:大众点评=>参考Qzone实现开源= >冷启动修复
RocooFix:百度金融= >开源=>冷启动修复
Aceso: 美丽说蘑菇街=>开源=>实时修复
Amigo:饿了么=>开源= >冷启动修复
Tinker: 微信= >开源= >冷启动修复
Sophix: 阿里=>未开源(商业收费) =>实时修复+冷启动修复
还有一些框架是内部使用没公开的
简单分类如下:
native hook:Dexposed,Andfix,阿里百川,HotFix;
Java:Qzone超级补丁;QFix,Robust,Nuwa,RocooFix,Aceso,Amigo,Tinker;
混合:Sophix
合理的分类如下:
4、技术原理及特点
native解决方案;multidex 方案;Instant Run 热插拔原理等;
5、技术原理及特点
QQ空间;
微信热补丁方案:
美团Robust等;
6、修复技术如何选择?
1、阿里Dexposed
2、阿里AndFix
3、QQ空间
4、美团Robust
5、微信Tinker
6、阿里Sophix
学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。可以助力app百倍的热修复技术,已经非常成熟。各大厂商都拥有自己的热修复技术,像微信,QQ,支付宝,手淘,饿了么/美团等等。
面试官经常会拿热修复来考察开发者的技术功底。因为热修复涉及到的知识面非常的广,需要掌握反射、类加载、gradle、字节码插桩、davilk/art虚拟机等等。
为了帮助到大家可以在面试中,合理的避开面试官挖的坑,我这整理了《2023年版的Android 面试题集》,感谢兴趣的可以进行参考备战面试。