怎么进行热修复
服务端:补丁包管理
用户端:执行热修复
开发端:生成补丁包
热修复需要解决的问题
开发端
-
补丁包是什么?
-
如何生成补丁包?
-
开启混淆后呢?
-
对比改动自动生成补丁包(gradle)?
用户端
-
什么时候执行热修复?
-
怎么执行热修复(使用补丁包)?
-
Android版本兼容问题?
热修复解决方案
热补丁方案有很多,其中比较出名的有腾讯Tinker、阿里的AndFix、美团的Robust以及QZone的超级补丁方案。
AndFix
在native动态替换java层的方法,通过native层hook java层的代码。
Robust
对每个函数都在编译打包阶段自动的插入了一段代码。类似于代理,将方法执行的代码重定向到其他方法中。
Tinker
Tinker通过计算对比指定的Base Apk中的dex与修改后的Apk中的dex的区别,补丁包中的内容即为两者差分的描述。
运行时将Base Apk中的dex与补丁包进行合成,重启后加载全新的合成后的dex文件。