一篇文章搞懂热修复类加载方案原理( 四 )


那么热修复的原理就是将改好 bug 的 dex 相关文件放进 dexElements 集合的头部,这样遍历时会首先遍历修复好的 dex 并找到修复好的类,因为类加载器的双亲委托模式,旧 dex 中的存有 bug 的 class 是没有机会上场的 。这样就能实现在没有发布新版本的情况下,修复现有的 bug class
手动实现热修复功能根据上面热修复的原理,对应的思路可归纳如下

  1. 创建 BaseDexClassLoader 的子类 DexClassLoader 加载器
  2. 加载修复好的 class.dex (服务器下载的修复包)
  3. 将自有的和系统的 dexElements 进行合并,并设置自由的 dexElements 优先级
  4. 通过反射技术,赋值给系统的 pathList

【一篇文章搞懂热修复类加载方案原理】


推荐阅读