热修复

所谓热修复就是,在我们应用上线后出现小 bug 需要及时修复时,不用再发新的安装包,只需要发布补丁包,在客户不知不觉之间修复掉 bug。

热修复的优点

  • 不需要重新发版
  • 用户无感知修复,不需要下载最新的应用,代价小
  • 修复成功率高,把损失降到最低

常用热修复框架:

  • 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

合理的分类如下:

热修复面试题

热修复是 Android 大厂面试中高频面试知识点,也是我们必须要掌握的知识点。热修复技术,可以看作 Android平台发展成熟至一定阶段的必然产物。

  • Android热修复了解吗?
  • 热修复基础
  • 介绍下你知道的热修复框架
  • 基于类加载的热修复
  • 几种热修复方案的原理及优缺点?
  • 讲解一下中热修复的实现原理
  • ......

随着移动端业务复杂程度的增加,传统的版本更新流程显然无法满足业务和开发者的需求,热修复技术的推出在很大程度上改善了这一局面。国内大部分成熟的主流 App都拥有自己的热更新技术,像手淘、支付宝、微信、QQ、饿了么、美团等。可以说,一个好的热修复技术,将为你的 App助力百倍。对于每一个想在 Android 开发领域有所造诣的开发者,掌握热修复技术更是必备的素质。

下面就给大家分享一份《Android 热修复框架入门进阶指南》文档,如果大家有需要可以到文末免费获取!

Android 热修复框架入门进阶指南

第一节 AOT / JIT & dexopt 与 dex2oat
  • AOT/JIT
  • dexopt 与 dex2oat

第二节 热修复设计之 CLASS_ISPREVERIFIED 问题
  • 建立测试Demo
  • 制作补丁
  • 加载补丁
  • CLASS_ISPREVERIFIED

第三节 热修复设计之热修复原理
  • Android 热修复
  • Android 虚拟机和编译加载顺序
  • 混合模式的理解
  • 源码类到机器执行的文件过程
  • 补丁包
  • 类补丁生效原理
  • Davlik 虚拟机的限制
  • Davlik Class resolved by unexpected DEX: 限制和处理方式
  • 类加载器的双亲委派加载机制

第四节 Tinker 的集成与使用(自动补丁包生成)
  • Tinker组件依赖
  • Tinker的配置及任务
  • Tinker封装与拓展
  • 编写Application的代理类
  • 常用API
  • 测试
  • 细节

第五节 阿里巴巴 Sophix 热修复框架
  • 热修复方案对比
  • 准备工作
  • 集成步骤
  • 验证
  • 总结

第六节 美团 Robust 热修复框架原理解析
  • 热修复框架现状
  • 美团 Robust 热修复方案原理
  • Robust 实现细节
  • 总结

Android资料免费领取直通车