Andfix热修复框架原理及源码解析-下篇

本文深入剖析Andfix热修复框架原理与源码,重点介绍了如何遍历补丁集合进行类修复,以及如何通过替换方法实现热更新。此外,还探讨了jni在热更新过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

热补丁介绍及Andfix的使用
Andfix热修复框架原理及源码解析-上篇

 Andfix热修复框架原理及源码解析-下篇


如果没有看过上篇的建议从上篇看起。先大概回忆下,上一篇分析了mPatchManager.init("1.0"),addPatch()方法。还有通过分析打补丁工具,了解补丁文件是怎么生成的。下面就来讲讲我们如何去读它。思绪回到Application的loadPatch()方法。

 


这个方法就是遍历mPatchs,就是上篇介绍的存储patch的一个集合。根据补丁名找到对应的类,做为参数传给fix();

 

前面一直提到dexFile,这里做一个简单的介绍,它就是被类加载器使用的操作Dex文件的类。我注释都写的很清楚,遍历dexFile文件中所有的类, 如果有需要修改的类集合中在这个Dex文件中找到了一样的类,则使用loadClass(String, ClassLoader)加载这个类, 然后调用fixClass(String, ClassLoader)修复这个类。


亲们看注释吧,更加详细点。这个方法就是找到有问题的类,和相关方法,作为参数传给replaceMethod().


继续看注释,这里调用了AndFix.addReplaceMethod(src, method).

 

这里就涉及到jni,jni简单的入门总结

我们找到文件打开。

 

可以看到它分为ArtDalvik分别处理,我们art5.0为例看看。

 

再看看Dalvik里面

 

好了,就分析到这里了。

相关资料工具及demo下载地址:http://pan.baidu.com/s/1hsdcs7a

转载请注明转自:http://blog.youkuaiyun.com/u011176685/article/details/50984885

欢迎关注个人微信公众号,专注于Android深度文章和移动前沿技术分享


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值