Tinker热修复原理

安卓分包有多个Dex文件,源码中每个类都是遍历dex文件而得到的

Tinker热修复原理_第1张图片
image.png
  • dexElements 就是管理我们所有的Dex文件


    Tinker热修复原理_第2张图片
    image.png
  • MainActivity启动之后通过ClassLoader文件
  • 我们在MainActivity加载之前,把我们打好的补丁替换到Dex文件里面
  • 热修复步骤:前提:开启读写权限 1:打补丁 2:解压apk中的classes.dex文件 3:替换补丁文件


    Tinker热修复原理_第3张图片
    image.png

    Tinker热修复原理_第4张图片
    image.png

    4:修复文件(修复类中的loadDex方法实现)


    Tinker热修复原理_第5张图片
    image.png

    Tinker热修复原理_第6张图片
    image.png

    (2) 解压补丁文件并使用DexClassLoader来load文件
    Tinker热修复原理_第7张图片
    image.png

    Tinker热修复原理_第8张图片
    image.png
Tinker热修复原理_第9张图片
image.png

(3)记得开启权限


Tinker热修复原理_第10张图片
image.png
Tinker热修复原理_第11张图片
image.png

Tinker热修复原理_第12张图片
image.png

Tinker热修复原理_第13张图片
image.png

(4)最后每次加载都要去修复


Tinker热修复原理_第14张图片
image.png

(5)必须重启修复

  • 另一种方法,直接把class文件打包成dex文件

你可能感兴趣的:(Tinker热修复原理)