Android平台出现了一些优秀的热更新方案,主要可以分为4类:
Robust插件对每个产品代码的每个函数都在编译打包阶段自动的插入了一段代码,对方法进行了Hook,类似AOP的方式。
需要反射更改DexElements,改变Dex的加载顺序,这使得patch需要在下次启动时才能生效,实时性就受到了影响,同时这种方案在android N [speed-profile]编译模式下可能会有问题。
需要针对dalvik虚拟机和art虚拟机做适配,需要考虑指令集的兼容问题,需要native代码支持,兼容性上会有一定的影响;
在Andfix的基础上进行优化和改进,所以具有实时修复特点。在Dex的加载,资源加载上都做了优化,解决了其他热修复框架上面无法解决的痛点。整体做了大量的优化和改进,唯一的遗憾就是不开源,但是也将整套技术方案整理成电子书,也算是一种回馈吧。
相关技术文章
原理:
他的思想完全来源于Xposed框架,完美诠释了AOP编程,这里用到最核心的知识点就是在native层获取到指定方法的结构体,然后改变他的nativeFunc字段值,而这个值就是可以指定这个方法对应的native函数指针,所以先从Java层跳到native层,改变指定方法的nativeFunc值,然后在改变之后的函数中调用Java层的回调即可。实现了方法的拦截功能。
优点:
缺点:
相关链接:
原理:
优点:
缺点:
相关链接:
原理:
优点:
缺点:
相关链接:
原理:
优点:
缺点:
相关链接:
原理:
优点:
缺点:
微信已知问题:
相关链接:
浅谈Android热修复: