热修复笔记

1、热修复

AndFix -> HotFix -> SoFix

AndFix

在native动态替换java层的方法,通过native层hook java层的代码。
补丁包:dex
补丁包(Test)-类加载->Test.class-反射->Method-反射-?MethodReplace
获取到补丁包中的Test类
ClassLoader#loadClass(指定加载的类)
DexFile

AndFix 为什么会被淘汰掉?
兼容问题,每个都要去兼容,类的属性会有变化。

SopFix(收费的)
实际上是AndFix升级版本,

Robust:Instant Run 热部署

自定义gradle插件 字节码插装
路由 martrix(卡顿监控) 无侵入埋点 都用到插装技术

Tinker

需要重新启动才能生效
bsdiff 1.txt 2.txt patch
差分
bspatch 1.txt new2.txt patch
合成

抖音:libbspatch.so
微信:libbspatch_utils.so
增量更新

bsdiff:so 资源等其他文件的差分
dexdiff:dex文件
1、下载补丁包
2、得到安装在手机中的有bug的apk中的dex PMS
3、合成 bsdiff 、bspatch(手机里面要做的)
4、使用合成的dex
类加载

反射 类加载 注解

ActivityThread#main Looper -> new H(Handler)

双亲委托机制
1、避免重复加载。
2、安全性考虑,防止核心API库被随意篡改。

注解处理方式三种
andFix RUNTIME 反射
robust CLASS 字节码插桩
Tinker SOURCE 注解处理器

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容