0°

AndFix Bug热修复框架原理及源码解析

内容预览:
  •   注:在Native层使用指针替换的方式替换bug方法,已达到修复bug的...~
  • 使用AndFix修复热修复的整体流程: 方法替换过程: “ 源码解析 解析源码...~
  • 在自定义Application中初始化PatchManger: PatchManager mPatchManager...~

始发于微信公众号: 程序员小乐

分享编程技能、互联网技术、生活感悟、打造干货分享平台,将总结的技术、心得、经验分享给大家,这里不只限于技术!学无止境,不求尽如人意,但求问心无愧。让学习成为一种美、一种习惯。值得爱学习的你去关注,感觉有帮助转发分享让更多的人去关注!点击上方 蓝字 关注!



作者:袭烽

链接: http://blog.csdn.net/shimiso/article/details/53097686
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

AndFix Bug热修复框架原理及源码解析—– 由   分享

每日英语

If you find a path with no obstacles, it probably doesn’t lead anywhere.

太容易的路, 可能根本就不能带你去任何地方。


AndFix原理



AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法。 


AndFix Bug热修复框架原理及源码解析

注:在Native层使用指针替换的方式替换bug方法,已达到修复bug的目的。

使用AndFix修复热修复的整体流程:

AndFix Bug热修复框架原理及源码解析

方法替换过程:

AndFix Bug热修复框架原理及源码解析

源码解析



解析源码从使用的方法一一解析。

在自定义Application中初始化PatchManger:

PatchManager mPatchManager = new PatchManager();

直接实例化了一个PatchManger实例对象,接下看PatchManager类源码:


AndFix Bug热修复框架原理及源码解析


然后看AndFixManager的初始化:


AndFix Bug热修复框架原理及源码解析

AndFix Bug热修复框架原理及源码解析

AndFix Bug热修复框架原理及源码解析


接下,看一下版本的初始化:


mPatchManager.init(“version”)


init方法源码:


AndFix Bug热修复框架原理及源码解析

AndFix Bug热修复框架原理及源码解析


Patch文件的加载


AndFix Bug热修复框架原理及源码解析

AndFix Bug热修复框架原理及源码解析

loadPatch方法源码

mPatchManager.loadPatch();


loadPatch源码:


AndFix Bug热修复框架原理及源码解析


fix bug


AndFix Bug热修复框架原理及源码解析

AndFix Bug热修复框架原理及源码解析

AndFix Bug热修复框架原理及源码解析

AndFix Bug热修复框架原理及源码解析


由于Android4.4后才用的Art虚拟机,之前的系统都是Dalvik虚拟机,因此Natice层写了2个方法,对不同的系统做不同的处理方式。


extern void dalvik_replaceMethod(JNIEnv* env, jobject src, jobject dest);//Dalvik

extern void art_replaceMethod(JNIEnv* env, jobject src, jobject dest);//Art


Dalvik replaceMethod的实现:


AndFix Bug热修复框架原理及源码解析


Art replaceMethod的实现:


AndFix Bug热修复框架原理及源码解析

AndFix Bug热修复框架原理及源码解析


添加Patch


mPatchManager.addPatch(path)


源码:


AndFix Bug热修复框架原理及源码解析

移除Patch

mPatchManager.removeAllPatch();


源码:


AndFix Bug热修复框架原理及源码解析


到此源代码就解析结束。


反编译Patch dex文件代码



patch文件中.dex文件反编译后,看到源码效果如下: 


AndFix Bug热修复框架原理及源码解析 
红框标注的部分,就是补丁方法。方法的注解部分写了clazz和method的值,对应着apk包中的类名和方法名称。

如何您想进技术群和大牛们交流,关注公众号后,在后台回复 “加群” 即可

如果您觉得不错,请别忘了分享到您的朋友圈让更多的人看到!! 您的举手之劳,就是对我最好的支持,非常感谢!




AndFix Bug热修复框架原理及源码解析

每日掏心话

永远不要怪别人不帮你,也永远别怪他人不关心你。活在世上,我们都是独立的个体,痛苦难受都得自己承受。没人能真正理解你,石头没砸在他脚上,他永远体会不到有多疼。人生路上,我们都是孤独的行者,如人饮水冷暖自知,真正能帮你的,永远只有你自己。


AndFix Bug热修复框架原理及源码解析


推荐阅读





小密圈
这里聚集了业界内的大牛,值得各位大牛的加入!


AndFix Bug热修复框架原理及源码解析

看完本文有收获?请转发分享给更多人
关注「杨守乐」,提升编程技能

【QQ技术群】279126311 []
【QQ技术群】484572225 [未]

以上就是:AndFix Bug热修复框架原理及源码解析 的全部内容。

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论