热修复选型和原理

微信的Tinker基于QQ空间的Numa

Android ClassLoader

PathClassLoader 应用启动后加载 data/app/...

DexClassLoader 应用启动前加载 热修复使用


Numa原理,基于Android分包的基础上的,应用启动时加载主dex文件,启动后在加载其他的dex文件,多个dex文件排成有序数组,虚拟机加载类的时候会逐个加载dex文件,把热修复的代码插入到dex数组的最前面使用新类替换旧类

问题:当热修复的dex过大的时候会是应用启动变慢,针对这个不足,微信提出了Tinker


Base.apk和Fix.apk进行差异化对比合并产生fix_classes.dex然后在将替换掉要修复的dex文件,dex数目不会新增,启动不会延时


阿里百川HotFix(Sophix)

阿里热修复经历了Dexposed->AndFix->HotFix 1.x->HotFix 2.x(SoFix)

Dexposed 

AOP框架 Xposed开源框架 Hooking思想

系统支持:Dalvik 2.3\4.0-4.4

CPU:arm

只支持方法级别上的修复,不支持函数的增加,资源的修复


AndFix

方法级别的修复


HotFix 未开源

native层修复







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值