Android热修复--简介

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值