深入解析:Android热修复技术选择和原理,字节跳动最新开源

想要成为一名优秀的Android开发,你需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。

热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷。

热修复技术对比
1.公司角度

大致可以分为阿里系和腾讯系和其他,如下:

  1. 阿里系

Dexposed 开源,实时修复

AndFix 开源,实时生效

HotFix 阿里百川,未开源,免费、实时修复

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

HotFix是AndFix的优化版本,Sophix是HotFix的优化版本。目前阿里系主推是Sophix。

  1. 腾讯系

Qzone超级补丁 QQ空间,未开源,冷启动修复

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

Tinker 微信团队,开源,冷启动修复。提供分发管理,基础版免费

  1. 其他

Robust 美团, 开源,实时修复

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

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

RocooFix 百度金融,开源,冷启动修复

Aceso 美丽说蘑菇街,开源,实时修复

2.技术角度
1.代码修复的角度

2.代码修复,资源修复,so修复这三个角度

3.已开源的热修复框架数据对比

| 框架名称和github地址 | star数量 | 最后一次更新 | 版本 |

| — | — | — | — |

| Dexposed | 4.3k | 5 years ago | 0.1.8 |

| AndFix | 6.8k | 4 years ago | 0.5.0 |

| QFix | 8 | 3 years ago | 无 |

| Nuwa | 2.9k | 5 years ago | 1.0.0 |

| Tinker | 15.2k | 29 days ago | 1.9.14.7 |

| Robust | 3.7k | 4 months ago | 0.4.99 |

| Aceso | 791 | 3 years ago | 0.0.3 |

| Amigo | 1.3k | 3 years ago | 0.6.* |

| RicooFix | 1.6k | 4 years ago | 无 |

可以看到,近期还在更新的有Tinker和Robust,其他的都是至少三年之前的更新。

如何选择热修复框架
三个方面进行考虑
1.项目需求

方法级别修复,资源修复,so库的修复

对平台兼容性要求和成功率要求

有需求对分发进行控制,对监控数据进行统计,补丁包进行管理

是否付费

2.学习,使用成本

学习成本

代码侵入性

调试维护成本

3.技术保障,稳定性

比如GitHub Star,大公司技术保障,专人维护

热度高,社区活跃

小结

从这三个方面考虑,最后筛选出三个比较优秀的热修复库,Sophix,Tinker,Robust

如果考虑付费,Sophix和Tinker付费版(云服务),我支持Sophix,性能消耗低,支持即时生效,对代码无侵入,免费阈值的支持更好。

如果不考虑付费,只需要支持方法级别的Bug修复,不支持资源以及so库,推荐使用Robust,否则使用Tinker免费版。

当然如果公司实力够牛逼,可以考虑自研,灵活性以及可控性最强。

代码、资源、so库修复

AndroidManifest出现Bug是无法修复的,因为它是由系统进行解析的,系统会直接获取安装包里唯一的AndroidMainfest.xml文件,在解析过程不会访问补丁包信息。

代码修复:任何的热修复方案,想要改变代码逻辑,都需要在补丁包里包含一个新逻辑的dex文件。

资源修复:有些资源,比如桌面图标,通知栏图标以及RemoteView之类的资源,是由系统直接解析安装包里的资源得到的,因此对于这类资源,任何热修复方案都

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: KVM虚拟化技术是目前比较流行并开源的虚拟化技术之一。它不仅简单易用,而且与Linux内核紧密集成,性能也非常出色。 KVM的实战应用非常广泛,包括虚拟化服务器、云平台、桌面虚拟化等。通过KVM,我们可以在一台物理机上虚拟出多台虚拟机,并通过网络进行管理和访问。这样,我们就可以更好地利用物理资源,提高服务器的利用率,从而降低成本。 在KVM的原理解析中,我们需要了解KVM是如何实现虚拟化的。首先,KVM利用了Linux内核对硬件的抽象和管理能力,通过向内核注册自己的虚拟设备,实现对硬件的虚拟化。其次,KVM使用了硬件辅助虚拟化技术,例如Intel的VT-x和AMD的AMD-V。这些技术可以使虚拟机在机器语言级别上直接访问物理硬件,并且在虚拟化过程中几乎不会产生性能损失。 最后,KVM还支持各种虚拟化技术的组合,例如普通虚拟机、全虚拟化、半虚拟化、硬件辅助虚拟化、PCI设备直通等。这种灵活的虚拟化技术组合方式可以为不同的应用场景提供更好的支持,保证了虚拟机的性能、稳定性和安全性。 综上,KVM虚拟化技术是一种可靠、灵活、高效的虚拟化技术,可以帮助企业更好地利用物理资源,提高服务器的利用率,降低成本。同时,通过KVM的学习,我们能够更好地理解虚拟化技术原理,为我们今后的学习和工作都将带来更好的支持。 ### 回答2: KVM虚拟化技术是一种基于Linux内核的全虚拟化技术,它可以将一台物理机虚拟出多台互相隔离的虚拟机,每个虚拟机可以独立运行不同的操作系统。KVM虚拟化技术的优点是稳定、可靠、高效,最为重要的是开源免费。 《KVM虚拟化技术:实战与原理解析》这本书为读者讲解了KVM的原理、安装、配置、使用、优化和常见问题解决等内容,既有理论知识又有实践经验。通过对本书的学习,读者可以深入了解KVM虚拟化技术的工作原理及其优势,准确掌握KVM虚拟机的安装和配置方法,提高虚拟机的利用效率,时刻做好系统的优化和维护工作。 该书有助于IT从业人员的技能提升,增强他们应对虚拟化技术挑战的能力。学习本书不仅可以有效提高工作效率,更能加深对虚拟化技术的理解,为今后从事相关工作奠定坚实基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值