那么热修复的原理就是将改好 bug 的 dex 相关文件放进 dexElements 集合的头部,这样遍历时会首先遍历修复好的 dex 并找到修复好的类,因为类加载器的双亲委托模式,旧 dex 中的存有 bug 的 class 是没有机会上场的 。这样就能实现在没有发布新版本的情况下,修复现有的 bug class
手动实现热修复功能根据上面热修复的原理,对应的思路可归纳如下
- 创建 BaseDexClassLoader 的子类 DexClassLoader 加载器
- 加载修复好的 class.dex (服务器下载的修复包)
- 将自有的和系统的 dexElements 进行合并,并设置自由的 dexElements 优先级
- 通过反射技术,赋值给系统的 pathList
【一篇文章搞懂热修复类加载方案原理】
推荐阅读
- 使用Apache协议的是自由软件吗?
- 昆仑雪菊胎菊冲泡方式,昆仑雪菊茶的冲泡步骤
- 景洪勐宋古茶山,勐宋古茶山滑竹梁子
- 苦丁的功效与作用,发酵小叶苦丁茶的功效与作用
- Python实现数据压缩如此简单
- 禁忌喝的八种茶,喝苦瓜茶的禁忌
- 不要忽视 .gitignore
- 喝清茶能减肥吗,喝青茶能减肥吗
- 经期喝生姜茶可以么,经期喝什么茶
- 很少使用但很方便的HTML标签
