Android热修复大白话版(导读)
首先需要考虑的是类加载机制
常见的有以下四个类加载器:
PathClassLoader
DexClassLoader
BaseDexClassLoader
DexPathList
接着,我们知道:
Android类加载器在加载一个类时会先从自身DexPathList对象中的Element数组中获取(Element[] dexElements)到对应的类,之后再加载。这个过程中遍历的是【数组】,而数组中每一个元素都是【dex文件】类型。
最后:
在循环中,首先遍历出来的是dex文件,然后再是从dex文件中获取class。因此,只要把没有Bug的class打包成一个dex文件,放于Element数组的第一个元素,在进行加载时这样就能保证系统优先获取到的class是第一个元素即修复好的class。