热修复 移动平台热更新技术背景
为什么要做热更新
热更新的行业情况
Android 热更新方案
- Native,代表有阿里的Dexposed、AndFix与腾讯的内部方案KKFix;
- Java,代表有Qzone的超级补丁、大众点评的nuwa、百度金融的rocooFix、饿了么的amigo以及美团的robust。
阿里的 DexPosed
Qzon的超级补丁 HotFix
- DexOpt 会把每一个类的方法 id 检索起来,存在一个链表结构里面,但是这个链表的长度是用一个 short(2^16=65536) 类型来保存的,导致了方法 id 的数目不能够超过65536个。当一个项目足够大的时候,显然这个方法数的上限是不够的。
- Dexopt 使用 LinearAlloc 来存储应用的方法信息。Dalvik LinearAlloc 是一个固定大小的缓冲区。在Android 版本的历史上,LinearAlloc 分别经历了4M/5M/8M/16M限制。Android 2.2和2.3的缓冲区只有5MB,Android 4.x提高到了8MB 或16MB。当方法数量过多导致超出缓冲区大小时,也会造成dexopt崩溃
- 没有合成整包(和微信Tinker比起来),产物比较小,比较灵活
- 可以实现类替换,兼容性高
- 不支持即时生效,必须通过重启才能生效。
- 为了实现修复这个过程,必须在应用中加入两个dex!dalvikhack.dex中只有一个类,对性能影响不大,但是对于patch.dex来说,修复的类到了一定数量,就需要花不少的时间加载。对手淘这种航母级应用来说,启动耗时增加2s以上是不能够接受的事。
- 在ART模式下,如果类修改了结构,就会出现内存错乱的问题。为了解决这个问题,就必须把所有相关的调用类、父类子类等等全部加载到patch.dex中,导致补丁包异常的大,进一步增加应用启动加载的时候,耗时更加严重。
微信的 Tinker
- 合成整包,不用再构造函数插入代码,防止verify,verify和opt在编译期间就已经完成,不会在运行期间进行
- 性能提高。兼容性和稳定性比较高。
- 开发者透明,不需要对包进行额外处理。
- 与超级补丁技术一样,不支持即时生效,必须通过重启应用的方式才能生效。
- 需要给应用开启新的进程才能进行合并,并且很容易因为内存消耗等原因合并失败。
- 合并时占用额外磁盘空间,对于多DEX的应用来说,如果修改了多个DEX文件,就需要下发多个patch.dex与对应的classes.dex进行合并操作时这种情况会更严重,因此合并过程的失败率也会更高。
阿里的 Andfix
IOS的热更新方案
Wax
- 运行时构造类和方法
- 运行时替换方法的实现
实际上这两个能力是非常恐怖的,像脚本语言那样,文本即代码,无须编译。
JSPatch
转载于:https://www.cnblogs.com/baiqiantao/p/9160806.html
热修复 移动平台热更新技术背景相关推荐
- 热修复——Bugly让热修复变得如此简单
一.简述 在上一篇<热修复--Tinker的集成与使用>中,根据Tinker官方Wiki集成了Tinker,但那仅仅只是本地集成,有一个重要的问题没有解决,那就是补丁从服务器下发到用户手机 ...
- Android 热修复一(热修复流程原理)
Android热修复一:热修复的流程 下一篇:Android热修复二(手写热修复代码) 在听了lance老师的热修复理论之后,决定写一篇文章,把我理解的全部记下来 之前也多少了解过热修复,当下的热修复 ...
- 热修复系列——Android热修复技术进阶篇
目录 1 前言 2 热修复技术 2.1 Dexposed 2.2 AndFix 2.3 QZone 2.4 Tinker 2.6 epic 2.7 YAHFA 2.8 FastHook 2.9 美团R ...
- 微信热修复 Tinker 和 flavor 更新
好久都没有写博客了,最近看了看关于热更新的内容.主要有阿里的,腾讯的,而实验的则是使用的是微信的热修复 Tinker ,以及在使用了 flavor 后的 热修复. 本文的内容是基于 AS3.0.1,注 ...
- android 热修复视频,Android热修复
所谓热修复,简单来说就是不以下载新版本apk的方式来修改应用的bug,而是在应用启动后从服务器下拉补丁包实现动态修复bug.所以在应用出现bug后,我们只需要打一个补丁,用户无需下载安装新的版本.主要 ...
- Android热修复技术选型参考
背景 热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷. 热修复技术对比 1.公司角度 大致可以分为阿里系和腾讯系和其他,如下: 阿里系 Dexposed ...
- 深入解析:Android热修复技术选择和原理
背景 想要成为一名优秀的Android开发,你需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~. 热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修 ...
- Android热修复技术选择和原理分析
背景 热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷. 热修复技术对比 1.公司角度 大致可以分为阿里系和腾讯系和其他,如下: 阿里系 Dexposed ...
- Android热修复技术原理详解(最新最全版本)
本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结 通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单 ...
最新文章
- c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D
- sql 字符串比较大小_SQL简单查询
- idea中没有j2ee_idea神器功能大全
- 本月初 本月末 java_本月内容作家(2018年8月)
- c语言模糊pid算法实例,模糊PID的c语言算法.docx
- MAC电脑新手入门指南
- 计算机网络-----网络编程
- Chrome卸载重装
- Java集合移除某个元素
- 一个手机里登录2个微信号(微信双开)
- 2020,300道高级iOS开发面试题(最新整理)
- XP系统无法设置用户权限,如加everyone等的
- 留学生论文essay写作字数不够怎么办?
- d1,d2,d3 error
- 聚类之高斯混合模型(Gaussian Mixture Model)
- spit()字符串分割
- 计算机主机的拆卸的注意事项,如何进行电脑主机除尘及板卡维护
- 胆囊有排毒鸿蒙那,胆生病,别怕!身上有反射区,专“治”胆病,结石、炎症绕道走...
- 字符编码问题总结(11年3月1日)
- xxl-job优雅停止执行器即客户端tomcat