常见场景App打包发出后

1.忘了关掉Log输出了

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

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

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

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

热修复几个属性如下

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

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

本质:打补丁

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

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

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

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

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

3.补丁的编写

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

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

iOS主流推荐:

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超级补丁

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

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

不提供支持后台

3.微信Tinker

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

核心技术:dex替换

优点:解决几乎所有场景

需要考虑的缺点:

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

提供后台  tinkerpatch.com

4.美团Robust

原理: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会解决几乎所有场景

有官方支持后台

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

琳琅满目,方案众多

选择建议:

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

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

服务器热修复,热修复探究,hotfix,patch相关推荐

  1. Android热修复学习之旅——HotFix完全解析

    在上一篇博客 Android热修复学习之旅开篇--热修复概述中,简单介绍了各个热修复框架的原理,本篇博客我将详细分析QQ空间热修复方案. Android dex分包原理介绍 QQ空间热修复方案基于An ...

  2. 【错误记录】Tinker 热修复示例运行报错 ( patch receive fail: /storage/emulated/0/patch_signed_7zip.apk, code: -2)

    文章目录 一.报错信息 二.解决方案 参考 [Android 热修复]运行 Tinker 官方示例 博客 ; 一.报错信息 Tinker 热修复中 , 将生成的 patch 包 app-debug-p ...

  3. Android热补丁动态修复实践

    前言 好几个月之前关于Android App热补丁修复火了一把,源于QQ空间团队的一篇文章安卓App热补丁动态修复技术介绍,然后各大厂的开源项目都出来了,本文的实践基于HotFix,也就是QQ空间技术 ...

  4. Android热补丁动态修复技术

    Android热补丁动态修复技术(一):从Dex分包原理到热补丁 一.参考 博文:安卓App热补丁动态修复技术介绍--by QQ空间终端开发团队  博文:Android dex分包方案--by 猫的午 ...

  5. Android 热补丁动态修复总结 eclipse版

    参考文章 1. http://blog.csdn.net/lmj623565791/article/details/49883661  鸿翔博客 2. https://mp.weixin.qq.com ...

  6. App热补丁动态修复技术介绍

    安卓App热补丁动态修复技术介绍 来自qq空间团队:微信号qzonemobiledev QQ空间终端开发团队 1.背景 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就 ...

  7. iOS 热更新/热修复

    热更新/热修复(调研的可能不全) 热更新 1.* Flutter * 由于渲染的基础(gdi)是自己实现的,所以实现跨平台.性能优化.摆脱平台约束方面的裕度更大.从实际体验来看, Flutter 的性 ...

  8. Android 热补丁动态修复框架小结

    Android 热补丁动态修复框架小结 转载于:https://www.cnblogs.com/zhujiabin/p/7923233.html

  9. 服务器做热备份用重装系统吗,ftp服务器做双机热备

    ftp服务器做双机热备 内容精选 换一换 只有在本端设备为主用节点时支持该操作,当本端设备降至备用节点时,请前往对端设备进行操作.若倒换不成功,可勾选"强制倒换",进行强制操作.只 ...

最新文章

  1. linux7内核优化,centos7 系统内核、网络等优化(适用高并发)
  2. 使用runtime让button传递多个参数
  3. “云计算”三部曲之二:与“云”共舞——再谈云计算
  4. 阿里《Java开发手册》最新嵩山版发布!
  5. MongoDB 操作
  6. 在Tomcat中通过JOTM支持JTA
  7. vm.$nextTick( [callback] )用法
  8. IE、Chrome、Firefox下的按钮文字居中
  9. 笑哭了!日本网友求助如何卸载360浏览器,过程堪比“ 拆弹 ”...
  10. 天正电气lisp是什么文件_LSP文件扩展名 - 什么是.lsp以及如何打开? - ReviverSoft...
  11. 机器学习中数据预处理的几种方法
  12. 黑客与电脑白的聊天记录
  13. pc登录2个微信客户端
  14. SFP光模块怎么配对光纤线缆
  15. locust工具学习笔记(五)-FastHttpUser类、关联、参数化、检查点、集合点
  16. 6.18上午CVPR直播 | 清华三维视觉研究团队:三维人体重建与渲染、高精度人脸生成
  17. 基于springboot的员工管理系统整合Mybatis操作
  18. Android流星雨效果---史上最炫,浪漫,值得陪你女朋友一起看~ [捂脸]
  19. 快递100商家下单demo
  20. QAP,社会网络分析假设检验之一

热门文章

  1. 江小白包装设计原型_雪碧和江小白的品牌跨界合作之旅可谓是一场品牌包装的视觉盛宴...
  2. google 浏览器默认打开控制台_前端开发调试:浏览器console方法总结
  3. 完全相同的4个小矩形如图所示放置_吸睛!矩形在PPT中的创意表现
  4. 华为正式发布鸿蒙智慧屏,5499 元、21999 元,2021 款华为智慧屏 V55/V85 明日 0 点正式开售:搭载鸿蒙系统...
  5. LeetCode之无重复字符的最长子串
  6. 【Python自然语言处理】中文分词技术——统计分词
  7. 【论文翻译】统一知识图谱学习和建议:更好地理解用户偏好
  8. SpringBoot项目部署到独立的Tomcat上
  9. 简单的循环以及从接口获取数组对象的一个字段集合
  10. Docker 是一个开源的应用容器引擎