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

227 阅读2分钟

####1.热修复技术介绍 ######1.什么是热修复 优点:无需重新发版本实施高效热修复、用户无感知修复无需重新下载、修复成功率高代价小。 除热修复外还可采用Hybrid方案,把需要改变的业务用h5方式独立出来,或者插件化方案Atlas或者DroidPlugin方案。 ######2.技术积淀 ######3.详细比较

比较.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.热修复未来展望