《深入探索Android热修复技术原理》笔记

1.热修复技术介绍

1.什么是热修复

优点:无需重新发版本实施高效热修复、用户无感知修复无需重新下载、修复成功率高代价小。
除热修复外还可采用Hybrid方案,把需要改变的业务用h5方式独立出来,或者插件化方案Atlas或者DroidPlugin方案。

2.技术积淀
3.详细比较
《深入探索Android热修复技术原理》笔记_第1张图片
比较.png
4.技术概览

Sophix设计理念:非侵入性
代码修复:
底层替换方案限制多、时效性好、加载轻快、立即见效。
类加载方案时效性差需冷启动、修复范围广、限制少。
资源修复
So库修复

2.代码热修复技术

1.底层热替换原理
Andfix
Android的java运行环境,在4.4以下用的是dalvik虚拟机,在4.4以上用的是art虚拟机。
虚拟机调用方法的原理:java代码在Android 中会被编译为DexCode,art中可以采用解释模式或者AOT机器码模式执行。
兼容性问题的根源:写死了ArtMethod结构体,会带来兼容问题。厂家定制机型修改了底层虚拟机结构。
突破底层结构差异:sizeof(ArtMethod)进行整体更换。取得size的精确值,需从底层数据结构及排列特点探寻答案。
访问权限的问题
即时生效所带来的限制:不适用引起原有类中发生结构变化的修改、不适用修复了非静态方法会被反射调用
2.你所不知道的java
内部类编译
混淆配置了-dontoptimize
switch case 语句编译
热部署解决方案:反编译-资源id替换-回编译
泛型编译:泛型类型擦除 虚拟机适用了桥方法的方式,解决了类型擦除和多态的冲突
Lambda表达式编译:java7引入的。增加减少都会导致热部署失败。
冷启动类加载原理:(87页)

3.资源热修复技术

4.SO库热修复技术

5.热修复未来展望

你可能感兴趣的:(《深入探索Android热修复技术原理》笔记)