琐事

热修复个人理解与整理

今天刚看完博主CSDN_LQR的一篇关于热修复的原理和实现博文,并且按照博主在末尾处的Demo进行了练习,确实是达到了热修复的效果。在此,写这篇博文的目的,只是为了个人对收获的一个整理以及方便日后的复习。


热修复原理

嗯,先从原理扯起,我的理解:原含有BUG的程序是由若干方块按顺序排列组成,当需要进行热修复的时候,程序员修改BUG之后产生新方块,再将其放进程序的生成队列中切排列在原BUG方块之前。程序读取已修复BUG的方块之后,由于该模块已完成读取,之后的BUG方块则不会被读取以此达到修复BUG的作用。(=。=好怪啊,这么理解感觉没啥问题,大概?)

修复过程

前面提到了原理,嗯,姑且是原理吧,可以知道方块的替换是热修复的重点,那么这个方块是如何产生的并且如何成功打入队列前列的,就是重中之重了。

在不使用阿里等热修复插件的前提下,读取的重点就是通过DexClassLoader去执行并读取Dex后缀的文件。实际上还有个PathClassLoader,However,嗯,这货只能加载已经安装到Android系统的apk文件,相比DexClassLoader,限制有丢丢大。

两者的源码就不贴了,直接去CSDN_LQR的博文看吧热修复——深入浅出原理与实现

Dex文件的生成,使用Android SDK build-tools目录下的工具进行协助,主要指令: dx –dex –output=dex文件完整路径 (空格) 要打包的完整class文件所在目录,这样做的前提,先把修复BUG之后的class文件及其根目录提取出来,然后会在output=地址生成.dex文件,之后使用上方链接中的Dex补丁工具类,进行文件替换工作。
其中可能也会遇到些BUG,嗯,上面的博文也有提及,注意细节就好了。接着,如果没什么问题,简单的热修复就完成啦~

呜啦啦~最近研究下阿里等热修复插件怎么玩,嗯,每天都要保持学习的尽头,不学习就是退步,加油!

PS:(╯‵□′)╯︵┻━┻ 突然发现博文链接一甩,啥都不用写了,崩了崩了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值