之前在学校跟着老师学长做项目的时候刚觉学了很多,但是在之前准备看到了一些新技术-热修复和插件化。在此之前一点都没有接触过该类的东西,听都没听说过,在一些博客面经中也提到过这些,就想来学一学这个技术。

概念

热修复能够修复软件漏洞的一些代码,是一种快速、低成本的修复软件产品的技术
例如某某公司刚上线了一款App就出现了bug,但是立即进行版本更新是不现实的,耗费更多人力财力物力。而热修复技术能够直接通过修改代码产生补丁包,能够更快速、更简单、低成本,并且在毫不影响用户体验的情况下达到bug修复。
插件化是一种遵循一定规范的应用程序接口编写出来的程序。
例如我们经常在某宝上购物,而且在这个软件中包含了各种各样的功能不及能购物,还能跳转到饿了么进行订餐、打开闲鱼啊等等很多,如果把所有功能都集成到App中,那么App的体积估计比王者、刺激战场还要大,更新一次下载一两个G,恐怕没人再用这个东西了。但是插件化就很好的解决了这个问题,不仅拓展了App的功能,还让App的体积比较小。

热修复框架分类

国内主流热修复技术方案
1.阿里系

名称

说明

AndFix

开源,实时生效

HotFix

阿里百川,未开源,免费,实时生效

Sophix

未开源,商业收费。实时生效/冷启动生效

2.腾讯系

名称

说明

Qzone超级补丁

qq控件,未开源,冷启动

QFix

手Q团队,开源,冷启动修复

Tinker

微信团队,开源,冷启动修复

3.其他

名称

说明

Robust

美团,开源,实时修复

Nuwa

大众点评,开源,冷启动修复

Amigo

饿了么,开源,冷启动修复

方案对比

方案对比

Sophix

Tinker

Nuwa

AndFix

Robust

Amigo

类替换

yes

yes

yes

no

no

yes

So替换

yes

yes

no

no

no

yes

资源替换

yes

yes

yes

no

no

yes

全平台支持

yes

yes

yes

no

yes

yes

即时生效

同时支持

no

no

yes

yes

no

性能损耗

较小

较小

较大

较小

较小

较小

补丁包大小


较小

较大

一般

一般

较大

开发透明

yes

yes

yes

no

no

yes

修复成功率


较高

较高

一般

最高

较高

开源

no

yes

yes

yes

yes

yes

Rom体积

较小

Dalivk较大

较小

较小

较小


插件化框架分类

DynamicAPK
携程,已经停止维护
VirtualAPK
滴滴
Atlas
阿里手机淘宝
RePlugin
360手机卫士

插件化框架对比

特性

DynamicAPK

VirtualAPK

Atlas

RePluign

支持四大组件

支支持Activity

全支持

全支持

全支持

组件是否需在宿主manifest中预注册





插件可以依赖宿主





支持PenndingIntent





Android特性支持

大部分

几乎全部

几乎全部

几乎全部

兼容适配

一般




插件构建

部署aapt

Gradle插件

Gradle插件

Gradle插件

以上就是我总结的热修复及插件化框架中的不同,接下来我们就要对其原理进行分析。