android 热更新

文章目录

  • 热更新的产生
  • 热更新流程
  • 主流热更新框架
  • android类加载机制
  • 热更新原理

热更新的产生

线上版本出现严重的bug,需要重新发版。热更新能快速的解决线上问题,不需要重新发版。

热更新流程

  1. 线上检测到严重的crash
  2. 拉出一个新的分支来修复线上问题
  3. 开发人员自测,项目测试人员测试,然后jenkins构建和补丁生成
  4. app通过推送或者主动拉取补丁文件
  5. 把修复的代码同步到master分支上

主流热更新框架

  1. 阿里 Dexposed
    是基于xposed hook方案,AOP框架。包括日志记录,性能统计,安全控制,事务处理。不仅可以定义hook自定义函数,也可以hookandroid Framework 的函数,然后用动态加载的技术让APP加载一小块java代码,需要用反射的技术,比较消耗性能

  2. 阿里 AndFix
    只专注于热修复,能够提供完善的apkpatch工具生成.apatch文件

  3. Nuwa
    基于类加载器加载.dex文件。技术结构是基于android的dex文件分包的技术

android类加载机制

PathClassLoader:用于加载系统类和应用的类

DexClassLoader:用于加载一些dex文件和一些jar包

热更新原理

  1. dexElement 数组
  2. ClassLoader 会遍历这个数组
    dexElement 会在基类的BaseClassLoader 中建立,会通过ClassLoader 去遍历这个数组,加载数组中的dex文件。当BaseClassLoader 加载到正确的类以后,就不会加载有问题的类。把修改的类文件打包成dex文件,让正确的dex文件排在dexElement数组的最前面。

你可能感兴趣的:(android 热更新)