之前在学校跟着老师学长做项目的时候刚觉学了很多,但是在之前准备看到了一些新技术-热修复和插件化。在此之前一点都没有接触过该类的东西,听都没听说过,在一些博客面经中也提到过这些,就想来学一学这个技术。
概念
热修复:能够修复软件漏洞的一些代码,是一种快速、低成本的修复软件产品的技术。
例如某某公司刚上线了一款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插件 |
以上就是我总结的热修复及插件化框架中的不同,接下来我们就要对其原理进行分析。