android andfix 分析,Android 热更新AndFix的分析

1.AndFix

只能修复方法级别的bug

使用流程:添加依赖→封装工具类→生成差异包(.patch文件)→loadpatch方法更新

源码:

初始化源码:PatchManager→init(比较版本号,删除旧版本)

加载源码:addpatch→initPatchs()→addpatch()→loadpatch()→fix()→fixclass()→replaceMethod()→addReplaceMethod()→

replaceMethod→native void replaceMethod

工具类?

PatchManager(初始化)

1b0b486318c298e2b5e23ace596ce29d.png

比较版本号,删除旧版本

cce4c8cb12c2a89223e00652360ca9c5.png

addPatch,指定目录的文件add进去

07803a28ffe0c5d4830df0df03ddf39e.png

af9bf29e64d7a008077ea171f9f96302.png

LoadPatch 动态加载文件

加载目录下的所有文件

f975c0d1d95351b02f1216d2286e897f.png

加载目录下的指定文件

59e0cb11cc6bec4dcd5e5acd324f96d7.png

如图是通过fix方法去加载patch文件的

d8af5b591008b313bb93002f5464d044.png

fix方法中是通过DexFile完成加载的。

836fbaa5ed855c31fcdead25de8b0edc.png

dexFile文件中又是通过fixClass方法处理dexFile文件

fa8dd7ef070c6e1e7739d84383d3b92a.png

fixclass方法中去解析文件并拿到有变动的方法通过replaceMethod方法去处理文件中的方法

b50146026b0714793180be5a6627ccd8.png

replaceMethod方法中又通过AndFix。addReplaceMethod方法处理修复的方法

e8a07a13ead26e97ec0ff853e3c821af.png

addReplaceMethod方法中又是一个replaceMethod方法

f4ce9513919d1eaf6f65190ba9ecc259.png

这个replaceMethod是一个native方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值