手把手带你打造一个 Android 热修复框架(上篇)
本文来自网易云社区 作者:王晨彦 前言 热修复和插件化是目前 Android 领域很火热的两门技术,也是 Android 开发工程师必备的技能。 目前比较流行的热修复方案有微信的 Tinker,手淘的 Sophix,美团的 Robust,以及 QQ 空间热修复方案。 QQ 空间热修复方案使用Java实现,比较容易上手。 如果还不了解 QQ 空间方案的原理,请先学习 安卓App热补丁动态修复技术介绍 今天,我们就基于 QQ 空间方案来深入学习热修复原理,并且手把手完成一个热修复框架。 本文参考了 Nuwa ,在此表示感谢。 本文基于 Gradle 2.3.3 版本,支持 Gradle 1.5.0-3.0.1。 实战 了解了热修复原理后,我们就开始打造一个热修复框架 关闭dex校验 根据文章中提到的第一个问题,在 Android 5.0 以上,APK安装时,为了提高 dex 加载速度,未引用其他 dex 的 class 将会被打上 CLASS_ISPREVERIFIED 标志。 打上 CLASS_ISPREVERIFIED 标志的 class,类加载器就不会去其他 dex 中寻找 class,我们就无法使用插桩的方式替换 class。 文章给出了解决办法,即让所有类都依赖其他 dex。如何实现呢? 新建一个 Hack 类,让所有类都依赖该类,将该类打包成 dex,在应用启动时优先将该