热修复的工作原理
1、经过多重的类加载器DexClassLoader的分析后,从当中获取Element数组对应的类之后在加载,然后采用数组遍历,遍历出一个个的dex文件。
2、执行for循环,对dex文件处理,获取class文件。
3、我们将打包修复好的补丁dex文件放入Element数组的第一个元素中,这样就能保证获取到的class是最新修复好的class了。
(而有bug的class也存在的,不过放到了Element数组的最后一个元素中了,没机会被拿到)
我其实很想对那些面试官说一句:
你们不要再问我热修复的工作原理了,这东西无非就是循环遍历dex文件获取class文件,然后加载替换对应的class来实现所谓的更新修复功能,那其实跟下载补丁包到本地来替换对应的有问题的补丁包中的class文件有什么区别呢,都是一样的原理,非要说的这么高深,何必呢!