1 Android热修复
相当于window系统的补丁,系统不用升级,通过升级补丁的方式来修复bug。同样Android系统不用升级,通过远程下载patch修复bug。
2 理论基础
2.1 class文件和dex文件
Class文件
作用:记录一个类文件的所有信息,记住所有。
文件结构:
Dex文件
什么是Dex文件:
就是能被DVM识别的文件,加载并执行的文件格式。和class文件一样,class文件是被jvm识别的。同时,并不是只有java文件可以生成dex文件,C++和C也可以生成dex文件。
Class文件和Dex文件的区别:
2.2 虚拟机
java栈区
作用:它存放的是java方法执行时的所有数据。
组成:由帧帧组成,一个栈帧代表一个方法执行
栈帧
定义:每个方法从调用到执行完成就对应一个栈帧在虚拟机栈中从入栈到出栈。
包括:局部变量表,栈操作数,动态连接,方法出口。
本地方法
作用:本地方法是专门为native方法服务的。
方法区
堆区
2.3 classLoader原理
Android ClassLoader种类
2.3.1 BootClassLoader
与JVM的 BoorStrapClassLoader 作用类似,主要用来加载Android中的formwork层的class字节码文件
2.3.2 PathClassLoader
与JVM的 AppClassLoader 作用类似,用来加载已经安装到系统中的apk的class文件。
2.3.3 DexClassLoader
与JVM的 CustomClassLoader 作用类似,用来加载指定目录中的class字节码文件。
2.3.4 BaseDexClassLoader
BaseDexClassLoader是 PathClassLoader和DexClassLoader的父类。
对应APP的运行,至少需要BootClassLoader 和PathClassLoader 这两个ClassLoader才可以运行。
判断是否是同一个class,需要类名包名相同,同时还需要被同一个ClassCloader加载的。
动态加载的难点
(1)有许多组件需要注册才能使用
(2)资源的动态加载很复杂
3 当前热门技术
(1)阿里--HotFix
官网:阿里百川HotFix
(2)微信--Tinker
官网:Tinker