Android热修复Hotfix原理

本文探讨了Android热修复技术,包括插件化的基本思想,通过将应用拆分为多个小模块来实现在线更新。重点介绍了Qzone的热修复方案,它依赖于Android的多DEX分包,通过将修复的类放入最前面的DEX来实现。微信的Tinker则采用DEX差量包,整体替换旧的DEX文件。此外,文章还提及了AndFix的低性能损耗特性以及360Droid Plugin的插件机制。
摘要由CSDN通过智能技术生成
  • 插件化:

一个程序划分为不同的部分,以插件的形式加载到应用中去,本质上它使用的技术还是热修复技术,让它支持大规模的代码更新以及资源和SO库的更新,将一个大apk改造成多个小apk,支持在线实时改变APP样式,在线更新添加功能等等(不用重新下载安装包安装)解决应用越来越大导致的各种限制(如65535方法数限制)

  • 热修复:

当线上应用出现紧急BUG,为了避免重新发版,并且保证修复的及时性而进行的一项在线推送补丁的修复方案

热修复原理:

热修复原理大都是基于ClassLoader:
Android的ClassLoader分为PathClassLoader和DexClassLoader,它们都继承自BaseDexClassLoader,其中
PathClassLoader用来加载系统类和应用类(也就是加载Dex中的class文件)
DexClassLoader用来从.jar和.apk类型的文件内部加载classes.dex文件(也就是加载所有Dex文件)

Qzone超级热补丁原理:

Qzone热修复方案基于的是android dex分包方案,就是把多个dex文件塞入到app的classloader中,但是android dex拆包方案中的类是没有重复的,如果classes.dex和classes1.dex中有重复的类,当用到这个重复的类的时候,系统会优先选择排在前面的dex文件的类,因此,我们把有问题的类打包到一个dex(patch.dex)中去,然后把这个dex插入到Elements的最前面便完成了热补丁方案(多DEX方案用来解决应用方法数65535的问题,现在Google也官方支持了MultiDex的实现方案。但是,这实在是应用因方法数超出而作出的不得已的下策,因此,热修复或多或少都有性能损耗)<

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值