腾讯热修复Tinker的详解和使用头条

ctolib 发布于2年前 阅读195次
0 条评论

1. 热修复概述

热修复说白了就是”打补丁”,比如你们公司上线一个app,用户反应有重大bug,需要紧急修复。如果按照通 
常做法,那就是程序猿加班搞定bug,然后测试,重新打包并发布。这样带来的问题就是成本高,效率低。于是,热 
修复就应运而生.一般通过事先设定的接口从网上下载无Bug的代码来替换有Bug的代码。这样就省事多了,用 
户体验也好。

2.Tinker的概述(本介绍是从官网上截取的)

Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。

它主要包括以下几个部分:

  1. gradle编译插件: tinker-patch-gradle-plugin
  2. 核心sdk库: tinker-android-lib
  3. 非gradle编译用户的命令行版本: tinker-patch-cli.jar

2.1 Tinker和阿里的AndFix、美团的Robust以及QZone的比较

Tinker QZone AndFix Robust
类替换 yes yes no
So替换 yes no no
资源替换 yes yes no
全平台支持 yes yes yes
即时生效 no no yes
性能损耗 较小 较大 较小
补丁包大小 较小 较大 一般
开发透明 yes yes no
复杂度 较低 较低 复杂
gradle支持 yes no no
Rom体积 较大 较小 较小
成功率 较高 较高 一般

总的来说:

  1. AndFix作为native解决方案,首先面临的是稳定性与兼容性问题,更重要的是它无法实现类替换,它是需要大量额外的开发成本的;
  2. Robust兼容性与成功率较高,但是它与AndFix一样,无法新增变量与类只能用做的bugFix方案;
  3. Qzone方案可以做到发布产品功能,但是它主要问题是插桩带来Dalvik的性能问题,以及为了解决Art下内存地址问题而导致补丁包急速增大的。

特别是在Android N之后,由于混合编译的inline策略修改,对于市面上的各种方案都不太容易解决。而Tinker热补丁方案不仅支持类、So以及资源的替换,它还是2.X-7.X的全平台支持。利用Tinker我们不仅可以用做bugfix,甚至可以替代功能的发布。Tinker已运行在微信的数亿Android设备上,那么为什么你不使用Tinker呢?

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。