Android热修复升级探索——Dalvik下冷启动修复的新探索

  1. 云栖社区>
  2. 阿里云ApsaraMobile(移动云)>
  3. 博客>
  4. 正文

Android热修复升级探索——Dalvik下冷启动修复的新探索

万壑 2017-06-20 19:54:33 浏览6777
展开阅读全文

冷启动类加载修复

对于Android下的冷启动类加载修复,最早的实现方案是QQ空间提出的dex插入方案。该方案的主要思想,就是把插入新dex插入到ClassLoader索引路径的最前面。这样在load一个class时,就会优先找到补丁中的。后来微信的Tinker和手Q的QFix都基于该方案做了改进,而这类插入dex的方案,都会遇到一个主要的问题,就是如何解决Dalvik虚拟机下类的pre-verify问题。

如果一个方法中直接引用到的类和该方法所属类都在同一个dex中的话,那么这个方法的所属类就会被打上CLASS_ISPREVERIFIED,具体判定代码可见虚拟机中的verifyAndOptimizeClass函数。

我们先来看看腾讯的三大热修复方案是如何解决这个问题的:

  • QQ空间的处理方式,是在每个类中插入一个来自其他dex的hack.

网友评论

登录后评论
0/500
评论
万壑
+ 关注