本文框架
- 什么是热修复?
- 热修复框架分类
- 技术原理及特点
- Tinker框架解析
- 各框架对比图
- 总结
通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单描述一下Tinker的框架结构。
一、什么是热修复?
正常开发流程
热修复开发流程
热修复优势
修复什么?
二、热修复框架分类
现状:百花齐放百家争鸣
简单分类
更合理的分类
三、技术原理及特点
3.1 阿里Dexposed – native解决方案
原理:
- 直接在native层进行方法的结构体信息对换,从而实现完美的方法新旧替换,从而实现热修复功能
他的思想完全来源于Xposed框架,完美诠释了AOP编程,这里用到最核心的知识点就是在native层获取到指定方法的结构体,然后改变他的nativeFunc字段值,而这个值就是可以指定这个方法对应的native函数指针,所以先从Java层跳到native层,改变指定方法的nativeFunc值,然后在改变之后的函数中调用Java层的回调即可。实现了方法的拦截功能。
- 基于开源框架Xposed实现,是一种AOP解决方案
- 只Hook App本身的进程,不需要Root权限
优点:
- 即时生效
- 不需要任何编译器的插桩或者代码改写,对正常运行不引入任何性能开销。这是AspectJ之类的框架没法比拟的优势;
- 对所改写方法的性能开销也极低(微秒级),基本可以忽略不计;
- 从工程的角度来看&