一 前言介绍
正好最近又看到热更新,对以前Android 热修复核心原理:ClassLoader类加载机制做了点补充。
从16年开始开始,热修复技术开始在安卓界流行,它以classloader类加载机制为核心,可以不发布新版本就修复线上 bug ,让线上版本有能力去进行全量或者增量更新。
常见的思路有两种:
-
类加载方案,即 dex 插桩。该方案以腾讯系为主,包括微信的 Tinker、饿了么的 Amigo;
-
底层替换,即修改替换 ArtMethod。方案以阿里系的 AndFix 等为主;
本文主要介绍第一种方案。
1.1 ART 和 Dalvik
-
Dex :全称为Dalvik Executable Format,由很多 .class 文件处理压缩后的产物,最终可以在 Android 运行时环境执行。它适合于内存和处理器速度有限的系统。
-
Dalvik:Google设计的Android平台的Java虚拟机。支持转换为.dex格式的Java程序运行。DVM默认使用CMS垃圾回收器。
-
ART:Android Runtime,于Android 4.4 引入,在 Android 5.0 及更高版本作为默认的 Android 运行时。ART做出的具体改进可看安卓官方文档介绍:运行时:Android Runtime (ART) 和 Dalvik。ART 和 Dalvik 都是运行 D