1、
线上的apk都会发生崩溃,只要崩溃率在千分之一之下就可以,但是如果超过该比率,就需要马上进行修改。但是正常流程会很长很繁杂。热更新就是为了解决这些问题的。
2、
Dexposed:基于xpost
AndFix:只专注于热更新,比Dexposed性能上更好
Nuwa:基于类加载器加载classloader,将一个dex文件拆分成多个dex文件,在应用启动的时候,会将一个作为主的dex进行加载,应用启动后将逐个加强其它的dex,多个dex文件会排成一个有序的数组,在虚拟机加载的过程中会迅速地遍历这些文件,在每个dex文件中查找对应的类,如果找到就返回,如果没有找到,就继续在下一个dex文件中查找。理论上来说,如果多个dex文件存在相同的类,那么排在之前的dex文件将会被优先选择,这其实是热更新的一个最主要最主要的思想。它其实是不断地去轮询、去遍历dex文件的数组,然后把我们需要修改的类的dex文件加到最前面,然后在轮询的时候就不会加载那个出现问题的dex文件,这就是热更新的原理。
3、热更新原理
pathclassloader:用于加载系统的类和应用的类
dexclassloader:用于加载.class文件、jar文件、apk包等等
4、热修复机制的原理
dexElements:会在基类的baseclassloader中创造好,然后会通过classloader不断遍历这个数组,加载这个数组中的dex文件,dexelements中放的是dex文件。这样baseclassloader加载到正确的类中后,就不会加载那个有cras的类,我们就把这个正确的类放在这个dex文件当中,让这个dex文件排在dexelements数组的前面就可以了