美文网首页
Android 热修复

Android 热修复

作者: 那个阳光下奔跑的少年 | 来源:发表于2020-05-28 15:49 被阅读0次

考虑问题

类替换
so替换
资源替换
即时生效
性能损耗
补丁包大小
全平台支持

AndFix

nativeHook ,在native进行方法结构体信息替换
优点:
即时生效,性能开销小
缺点:
兼容性问题,只能替换方法

Robust

javaHook
为每个方法自动插入修复逻辑,ChangeQuickRedirect不为空执行对应逻辑
优点:
兼容性高,立即生效,支持混淆,内联优化等操作
缺点:
不支持so和资源替换,侵入性强,会增加包体积

multidex

QQ空间热修复
DexPathList-> makePathElements (Element[] dexElements;)
findclass 顺序遍历Element数据获取DexFile,然后调用DexFile findClass。
插件化原理将补丁dex插入到数组最前面
优点:
代码是非侵入性的,对包体积影响不大
缺点:
重启生效,性能消耗大

dex替换

Tinker
提供差分包,合并后替换
优点:
兼容性高,补丁小,非侵入性
缺点:
冷启动生效,Dex合并内存消耗在VM head,容易OOM

资源修复

反射 AssertManager addAssertPath

so修复

接口替换

先加载指定补丁so,如不存在,再去加载apk so。

反射注入

将so 插入到nativeLibraryDirectories最前面。

相关文章

网友评论

      本文标题:Android 热修复

      本文链接:https://www.haomeiwen.com/subject/xnioahtx.html