Android 应用运行时 , 使用 PathClassLoader 加载 Dex 文件 , 在应用启动时 , 首先将若干 Dex 文件加载到内存中 ;
一个 Android 应用中可以存在多个 Dex...个 Dex 文件中都包含该 A.class 字节码文件 , 则只会返回第 2 个 Dex 文件中的类 , 遍历到此处就返回了 , 不会去遍历到低 3 个 Dex 文件 ;
利用上述顺序加载的机制 , 将修复包的...这里我们将修复好的 A.class 文件打包成 Dex 文件 , 将其插入到原来第 1 个和第 2 个 Dex 文件之间 , 这样在类加载器加载 A.class 类时 , 按照顺序先把修复的 Dex...文件加载到内存中 , 不再向后查找第 3 个 Dex 文件中出现崩溃的 A.class 类了 ;
热修复只是在前面插入一个修复好的 Dex 文件 , 不会删除出现问题的 Dex 文件 ;
第 1 个 Dex...文件一定不能出现问题 , 如果出现问题 , 就无法在该 Dex 文件之气前插入 Dex 文件 , 这个主 Dex 文件中有 Application , MainActivity 等相关重要组件 , 无法进行替换