作者:奉召开博_745 | 来源:互联网 | 2023-07-07 06:49
冷启动类加载修复
对于Android下的冷启动类加载修复,最早的实现方案是QQ空间提出的dex插入方案。该方案的主要思想,就是把插入新dex插入到ClassLoader索引路径的最前面。这样在load一个class时,就会优先找到补丁中的。后来微信的Tinker和手Q的QFix都基于该方案做了改进,而这类插入dex的方案,都会遇到一个主要的问题,就是如何解决Dalvik虚拟机下类的pre-verify问题。
如果一个方法中直接引用到的类和该方法所属类都在同一个dex中的话,那么这个方法的所属类就会被打上CLASS_ISPREVERIFIED
,具体判定代码可见虚拟机中的verifyAndOptimizeClass
函数。
我们先来看看腾讯的三大热修复方案是如何解决这个问题的:
- QQ空间的处理方式,是在每个类中插入一个来自其他dex的hack.