2019 深入解析Android热修复技术

发布时间:2020-07-18 21:33:00 作者:Android飞鱼
来源:网络 阅读:1348

前言

通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单描述一下Tinker的框架结构。

本文框架

一、什么是热修复?

正常开发流程

2019 深入解析Android热修复技术


2019 深入解析Android热修复技术


热修复优势

2019 深入解析Android热修复技术


修复什么?

2019 深入解析Android热修复技术


二、热修复框架分类

现状:百花齐放百家争鸣

2019 深入解析Android热修复技术


简单分类;

2019 深入解析Android热修复技术


更合理的分类;

2019 深入解析Android热修复技术


三、技术原理及特点

3.1 阿里Dexposed -- native解决方案

原理:

他的思想完全来源于Xposed框架,完美诠释了AOP编程,这里用到最核心的知识点就是在native层获取到指定方法的结构体,然后改变他的nativeFunc字段值,而这个值就是可以指定这个方法对应的native函数指针,所以先从Java层跳到native层,改变指定方法的nativeFunc值,然后在改变之后的函数中调用Java层的回调即可。实现了方法的拦截功能。


2019 深入解析Android热修复技术

2019 深入解析Android热修复技术

2019 深入解析Android热修复技术

优点:

缺点:

3.2 阿里AndFix -- native解决方案

原理:

优点:

缺点:

AndFix(Dexpsed)框架不稳定的原因(痛点)

2019 深入解析Android热修复技术

2019 深入解析Android热修复技术

原理:

2019 深入解析Android热修复技术

优点:

缺点:

插桩方案性能上的痛点:

2019 深入解析Android热修复技术

3.4 美团Robust -- Instant Run 热插拔原理

原理:

2019 深入解析Android热修复技术


优点:

缺点:

3.5 微信Tinker

原理:


2019 深入解析Android热修复技术

2019 深入解析Android热修复技术


优点:

缺点:

Tinker已知问题:

Tinker性能痛点:

3.6 阿里Sophix

原理(双剑合璧):

2019 深入解析Android热修复技术

优化Andfix(突破底层结构差异,解决稳定性问题):


Andfix底层ArtMethod结构时采用内部变量一一替换,倒是这个各个厂商是会修改的,所以兼容性不好。

2019 深入解析Android热修复技术

Sophix改变了一下思路,采用整体替换方法结构,忽略底层实现,从而解决兼容稳定性问题。

2019 深入解析Android热修复技术

突破QQ和Tinker的缺陷


QQ和Tinker的缺陷

2019 深入解析Android热修复技术

Sophix对dex的解决方案

2019 深入解析Android热修复技术

资源修复另辟蹊径


常用方案(Instant Run技术):这种方案的兼容问题在于替换AssetManager的地方

2019 深入解析Android热修复技术

Sophix资源修复方案

2019 深入解析Android热修复技术

SO修复另辟蹊径


2019 深入解析Android热修复技术

四、Tinker框架解析

之所以只贴了Tinker的代码框架,是因为目前开源的方案中是最好的,当然除了Robust。

代码结构

2019 深入解析Android热修复技术

修复流程

2019 深入解析Android热修复技术

这里后续再补一个详细的源码分析,敬请期待

五、对比图(来自不同的地方)

来自Tinker的对比;

2019 深入解析Android热修复技术


来自Sophix的对比;

2019 深入解析Android热修复技术


来自蘑菇街 Android 热修复探索之路;

2019 深入解析Android热修复技术

2019 深入解析Android热修复技术

六、总结

如果不考虑增大apk的体积,只是简单的修复代码,不修复so和资源,选择Robust是最稳定的,否则的话选择Tinker是一个不错的方案。虽然阿里Sophix横空出世,但是它不开源,而且商业收费,所以一般不是很赚钱的app选择收费的可能就很小了。不过它确实各方面都做了大量的优化,本文中的很多知识点也来源于阿里的《Android热修复技术原理.pdf》一书,本书值得一读,里面就是基于Sophix框架来编排的。


推荐阅读:
  1. 2019~2020年度总结
  2. Windows Server 2019 -正式发布

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android 热修复 roi

上一篇:Hive外连HBase表

下一篇:Docker镜像创建、数据管理与网络通信

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》