热修复探究,hotfix,patch

常见场景App打包发出后

1.忘了关掉Log输出了

2.存在一个业务逻辑触发必崩溃

3.某个本地图标忘了替换成新的

遇到这些问题,若是Web站点,Mobile站点问题都不大,因为这些具有“持续发布”的特长,但是App的特点是“版本发布”,每个版本需要打包,上传到应用市场,经过审核后,发布。这一些过程,3-7天不等。另外更新频率过快,用户体验也不好。另外若没有实现增量更新,App的包又比较大,还有一点,需要紧急修复的一般也没有多少功能,所以用户会比较反感。

那么如何有效解决这些问题呢?热修复

热修复几个属性如下

价值:线上问题第一时间能够被修复

特点:App无需发版,用户无感知,体积小,灵活

本质:打补丁

可以看到两个痛点都被解决了1.无需发版2.用户无感知

看到后有点小激动了,来看热修复示意图:


从示意图可以看到,重点有三个问题

1.服务器端需要下发和管理补丁,并提供安全传输部署工作

2.客户端App下载补丁,并处理

3.补丁的编写

后面说如何针对这三个问题解决

热修复目前iOS与Android平台均支持

iOS主流推荐:

1.JPatchhttp://jspatch.com/官网

https://github.com/bang590/JSPatchGithub开源地址

JPatch官方提供支持后台,但要嵌入SDK

若使用GitHub上开源实现,需要自己处理及维护后台

补丁主要技术:使用JavaScript调用任何Objective-C的原生接口,替换任意Objective-C原生方法

2.阿里百川

http://baichuan.taobao.com/?spm=a3c0d.7629140.1998907816.1.G9itXC官方文档

官方提供支持后台,同样需要嵌入SDK

补丁主要技术:1.JavaScript

3.lua脚本支持多目录多文件

Android主流推荐

Native,代表有阿里的Dexposed、HotFix、AndFix与腾讯的内部方案KKFix;

Java,代表有Qzone的超级补丁、大众点评的nuwa、百度金融的rocooFix,饿了么的amigo以及美团的robust,微信Tinker

1.支付宝AndFixhttps://github.com/alibaba/AndFixGithub

不提供支持后台,需要嵌入SDK

技术核心:底层采用native hook的方式,这套方案直接使用dalvik_replaceMethod替换class中方法的实现

特点:无需重启应用,直接生效

缺点:只支持原有方法上修改,不能增加方法,成员变量等等

2.QZone超级补丁

官方原理文档https://zhuanlan.zhihu.com/p/20308548?columnSlug=magilu

核心技术:通过classLoader替换项目中的类

缺点:补丁包很大,运行性能受到影响,启动变慢

不提供支持后台

3.微信Tinker

文档https://www.diycode.cc/topics/321

方案来源gradle编译的instant run与buck编译的exopackage

核心技术:dex替换

优点:解决几乎所有场景

需要考虑的缺点:

1.7.6内核之后Tinker不再支持加固的动态更新  。另外 小问题  2. 补丁通过轮询方式获取,需要自己集成Push 达到下发补丁功能 :通知客户端,客户端调用Tinker主动获取补丁方法  3. 无法达到,不重启APP的情况下的热修复

提供后台  tinkerpatch.com

4.美团Robust

官方文档http://tech.meituan.com/android_robust.html

原理:Robust是为每个函数都插入了一段逻辑,为每个class插入了ChangeQuickRedirect的字段

缺点:复杂,增加包体积

不提供支持后台

5阿里百川HotFix

官方文档

http://baichuan.taobao.com/?spm=a3c0d.7629140.1998907816.1.G9itXC特点:目前1.4最新版,预计17年2月之前发版2.0

1.4采用Java方式替换方法,解决业务场景较少。2.0会解决几乎所有场景

有官方支持后台

下面我们对比一下这些热修复方案


琳琅满目,方案众多

选择建议:

优先选择提供补丁管理,维护,下发的友好后台,会帮助开发者解决诸多小问题

优先选择该项目持续维护,保证出现问题第一时间能够解决

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容