热修复简介
服务概述
热修复服务提供紧急修复线上 bug,无需重新发版即可在用户无感知的情况下完成原生代码问题修复的能力。热修复服务支持多种修复策略设置,包括但不限于修复版本、修复范围等。热修复组件拥有成熟、完整的流程,支持热修复补丁的下发、暂停、灰度、修复、回滚等流程。发布平台可以实时监控热修复补丁下发的阶段,并具备完备的漏斗统计,可以实时统计补丁触达率等。
- Android
热修复是基于用户已安装的母(安装)包和新(功能)(安装)包之间进行 diff 生成补丁,通过推送系统动态的将补丁下发到用户手机上,然后和母包进行合并和加载,实现新功能动态加载到母包上的效果,从而达到动态修复线上问题的效果。 - iOS
在 iOS 开发领域,应用迭代周期长且发版速度慢,当线上遇到严重问题时是无法通过发版渠道进行快速修复的。因此对于 iOS 应用来说,能快速修复线上严重问题而无需发版的热修复方法是非常重要的。
TMF iOS 热补丁提供基于 JSPatch 的热修复方法,在利用 Objective-C 运行时特性的基础上,通过 JavaScript 原生代码替换原有的方法实现,从而修复线上的问题。
应用场景
- 热修复组件可在线上快速推送修复补丁到终端进行修复操作。
- 热修复组件可以通过下发功能性补丁包来完成轻量级业务修改,完成线上快速更新。
- 热修复组件可以通过下发更新性补丁包来完成轻量级运营或新特性灰度。
产品优势
Android
TMF 是 Android 的热补丁解决方案,支持动态下发代码、So 库以及资源,让应用能够在不需要重新安装的情况下实现更新。
类型 | TMF 热修复 |
---|---|
类替换 | yes |
So 替换 | yes |
资源替换 | yes |
全平台支持 | yes |
即时生效 | 重启进程生效 |
开发透明 | yes |
- 支持全面、开发透明,补丁包小,性能损耗低。
- 全量替换新的 dex(无需插桩,没有 art 地址错乱问题,无兼容问题,开发透明)。
- 基于 diff 算法新旧 dex 差异计算得到补丁包,体量小。
- 基于自研 dexdiff 算法,利用 dex 格式进一步优化包大小。
- 支持完善(Gradle 接入,进程管理,安全校验等)。
- 海量验证(腾讯系亿级海量用户验证)。
- 触达率高、精准触达,一小时80%,一天90%,十分钟推送、质量的数据反馈。
iOS
下图是热修复业界核心方案对比,,TMF 采取 JSPatch 的热修复核心方案:
TMF 热修复下发方案的优势
- 强大的下发管理:
- 支持热修复下发和版本管理。
- 支持多补丁下发。
- 支持热修复中途暂停、回滚等回退操作,具有强大的可控能力。
- 支持补丁灰度下发,热修复下发前可以充分测试补丁,更好的确保线上正式版安全。
- 高到达率:
- 利用 TMF 数据同步框架,终端框架利用推拉结合。
- 尽管 iOS 系统对 App 后台限制严苛,从平台下发热补丁后,6 小时覆盖率高于 70%,12 小时覆盖率高于 90%。
- 修复能力强:
- 支持 Objective-C 语言的 runtime 钩子。
- 支持 C 语言的 Fish Hook 。
- 安全性与完整性:
- 使用签名验证补丁包,本地加密存储保证补丁安全 。
- 实时监控:
- 客户端针对补丁的触达、下载、回滚等操作进行上报。
- 可实时监控完整的下发链路,掌握补丁应用情况。