Android 热修复原理(java类加载机制)
2020-05-16 16:08
495 查看
原文地址:https://www.jianshu.com/p/cb1f0702d59f
热修原理(java类加载机制)
DexClassLoader在加载一个类时会先从自身DexPathList对象中的Element数组中获取(Element[] dexElements)到对应的类,之后再加载。采用的是数组遍历的方式,不过注意,遍历出来的是一个个的dex文件。
在for循环中,首先遍历出来的是dex文件,然后再是从dex文件中获取class,所以,我们只要让修复好的class打包成一个dex文件,放于Element数组的第一个元素,这样就能保证获取到的class是最新修复好的class了(当然,有bug的class也是存在的,不过是放在了Element数组的最后一个元素中,所以没有机会被拿到而已)。
Tinker是将patch.dex与app中的classes.dex合并后的全量dex插在数组的前面。
相关文章推荐
- [置顶] Android热修复(一):底层替换、类加载原理总结 及 DexClassLoader类加载机制源码探索
- Android 热修复开发原理——类加载机制源码详解
- Java加载Class文件的原理机制
- Java加载Class文件的原理机制
- Java加载Class文件的原理机制
- 类加载机制实现Android热修复
- Android(java)学习笔记202:Handler消息机制的原理和实现
- Java JVM类加载机制原理
- Android性能优化(6):浅析类加载机制与热修复技术
- Java加载Class文件的原理机制
- Java的类加载机制原理
- Java提高篇——JVM加载class文件的原理机制
- Java基础——类加载机制及原理
- 【Java面试题】描述一下JVM加载class文件的原理机制?
- Java高新技术【4】 反射机制 及 Java类加载原理及类加载器
- 从源码分析 Android dexClassLoader 加载机制原理
- java加载Class文件的原理机制
- 从Java到android:类的加载机制
- JAVA面试常备题、JVM加载class文件的原理机制
- 【java JVM】JVM中类的加载,加载class文件的原理机制