Android热修复方案浅析

Android热修复原理热修复框架对比和代码修复 在Android应用开发中,热修复技术被越来越多的开发者所使用,也出现了很多热修复框架,比如:AndFix、Tinker、Dexposed和Nuwa等等。如果只是会这些热修复框架的使用那意义并不大,我们还需要了解它们的原理,这样不管热修复框架如何变化,只要基本原理不变,我们就可以很快的掌握它们。这一个系列不会对某些热修复框架源码进行解析,而是讲解热修复框架的通用原理。 阅读详情

热修复就是动态下发代码,它可以使开发者在不发布新版本的情况下,修复 BUG 和发布功能, 避免长时间的审核等待以及多次被拒造成的成本,达到及时解决问题和发布功能的目的。

一. 实现方案

目前热修复的实现套路基本上离不开以下两种:

实现方案描述代表
底层替换方案底层替换方案限制颇多,但时效性最好,加载轻快,立即见效阿里系的AndFix、Sophix
类加载方案类加载方案时效性差,需要重新冷启动才能见效,但修复范围广,限制少QZone超级补丁、微信Tinker

二. 方案对比分析

以下是Tinker、QZone超级补丁、AndFix、Robust对比图。

支撑\方案TinkerQZone超级补丁AndFixRobust
类替换yesyesnono
So替换yesnonono
资源替换yesyesnono
全平台支持yesyesyesyes
即时生效nonoyesyes
性能损耗较小较大较小较小
补丁包大小较小较大一般一般
开发透明yesyesnono
复杂度较低较低复杂复杂
gradle支持yesnonono
Rom体积较大较小较小较小
成功率较高较高—般最高

AndFix作为native解决方案,首先面临的是稳定性与兼容性问题,更重要的是它无法实现类替换,它是需要大量额外的开发成本的;

Robust兼容性与成功率较高,但是它与AndFix一样,无法新增变量与类只能用做的bugFix方案;

QZone超级补丁方案可以做到发布产品功能,但是它主要问题是插桩带来Dalvik的性能问题,以及为了解决Art下内存地址问题而导致补丁包急速增大的。

特别是在Android N之后,由于混合编译的inline策略修改,对于市面上的各种方案都不太容易解决。而Tinker热补丁方案不仅支持类、So以及资源的替换,它还是2.X-8.X(1.9.0以上支持8.X)的全平台支持。利用Tinker我们不仅可以用做bugfix,甚至可以替代功能的发布。

更重要的是,tinker方案目前是bugly热修复方案,这样子作为一个初创企业,只需要集成bugly sdk即可拥有强有力的热修复能力以及版本发布能力,同时兼具客户端bug收集等基本功能,极大的减少了企业的人力成本。


参考文档:

  1. bugly文档中心:

    https://bugly.qq.com/docs/

  2. buglyDemo地址:

    https://github.com/BuglyDevTeam/Bugly-Android-Demo

  3. tinker地址:

    https://github.com/Tencent/tinker

  4. AndFix地址:

    https://github.com/alibaba/AndFix

  5. Robust地址:

    https://github.com/Meituan-Dianping/Robust

  6. QZone超级补丁:

    https://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731290eef12ad0d17f39d4a

Android开发之热修复 一、前言   任何程序都无法保证上线后不会出现紧急bug,选择的修复方式不同,其代价也大不相同。所谓热修复,是相对于正常的版本迭代修复而言的,它可以及时在应用内下载补丁更新程序逻辑,修复bug;而不需要等到下一个版本发布。举个简单的例子,假如有一行代码的逻辑写错了,并且已经编译出APK,安装到了用户的手机上,此时有两种处理方式: 等待下一个版本发布,其中修复了错误代码,即迭代修复 给用户推送补丁,及时修复错误代码,即热修复 下图对比两者区别: 从上图可以看出热修复相对于迭代修复有很大优势: .. 阅读详情

相关推荐

IGS精密星历高效获取与解析指南

本文详细介绍了IGS精密星历在高精度定位中的核心作用,对比了IGS Final、IGR和IGU等不同产品的精度与时效性差异。指南提供了从武汉大学、NASA CDDIS等数据中心高效下载数据的实战方法,并深入解析了SP3文件格式,帮助用户掌握精密星历的获取、解析与自动化处理技巧,以支持厘米级定位应用。

garlic的博客 839

Android 热修复

混淆后的映射文件,路径:/module/build/outputs/mapping/debug/mapping.txt 一、热修复原理 热修复是指,在应用上线后出现 bug 需要及时修复时,不用再发新的安装包,只需要发布补丁包,在客户无感知下修复掉 bug。补丁包需要由开发者生成,由服务器管理并下发补丁包到用户的设备上执行热修复。 热修复解决方案对比(图片来源 Tinker GitHub): 通过类替换实现的热修复方案都不是即时生效的,需要重启应用后才能生效,而非类替换的方案可以做到即时生效,但实现方式有

tmacfrank 4838

机器学习——Anaconda下载安装教程

Anaconda详细下载安装教程

2401_83693485的博客 3070

Android热修复技术总结

这两年Android热修复是个挺时髦的东西,基本分为两派,一个是Hook虚拟机的,一个是Hook ClassLoader的。本文就来聊聊这两类方案,算是我自己的理解了。先说说Hook虚拟机的,这个技术源于国外的Xposed,又被阿里发扬光大,总体来说是个逼格很高的技术。将Java的函数在虚拟机层面改成一个Native函数,之后这个函数的走向就完全由我们来控制了,我们可以将其指向一个我们精心设计的Na

风语的专栏 1752

5分钟搞懂知识抽取:如何把非结构化数据变成知识图谱的宝藏?

本文通过一个电商评论分析实战案例,详细解析了如何利用spaCy、Neo4j等工具,将非结构化文本数据转化为结构化知识图谱的完整流程。文章重点阐述了知识抽取的核心步骤,包括命名实体识别、关系抽取以及知识存储与查询,帮助读者快速掌握将数据转化为知识宝藏的关键技术。

weixin_29054245的博客 235

「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

软件成分分析(Software Composition Analysis,SCA)是一种用于识别和分析软件内部组件及其关系的技术,旨在帮助开发人员更好地了解和管理其软件的构建过程,同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展与软件行业的快速发展密不可分,下面将介绍SCA的发展背景、技术原理以及当前主流SCA工具。

所有成功的背后,都是痛苦的坚持,所有的痛苦,都是傻瓜般的不放弃! 5637

Android热修复(Hot Fix)案例全剖析(一)

说到热修复技术,我们不得不先谈一下什么是冷修复。冷修复    当我们发现上线的应用APK存在Bug,我们通过发布新的应用APK,去替换旧的应用APK,以达到解决Bug的目的,但是这样做存在很大的缺点,需要用户二次下载APK,浪费用户流量,费时、费力、用户体验差。热修复    当我们发现上线的应用APK存在Bug,我们在用户使用过程中就把Bug修复了,优点是其过程中用户不需要把应用程序停止、卸载、重新

Android研发专栏 5093

Windows 下 Codex MCP 服务配置全攻略:从环境搭建到实战避坑

本文详细介绍了在Windows系统下配置Codex MCP服务的完整流程与实战避坑指南。内容涵盖从Node.js环境搭建、Codex CLI安装,到核心配置文件config.toml的编写与解析,并重点解决了Windows平台特有的环境变量设置、MCP服务启动命令适配等关键难点,帮助开发者顺利完成从环境准备到编辑器插件连接的整个配置过程。

weixin_28826545的博客 2075

Android热修复学习(一)

当我们应用上线后出现bug需要及时修复时,不用通过新发安装包,而是通过发布补丁包,在客户无感知的情况下修复bug;热修复实现原理归根还是类加载机制,与插件化方案的不同之处在于修复dex需要放在合并后的dex数组前面,才能执行修复后的代码;本质上都是对于类加载机制的运用;...............

故不积跬步无以至千里 934

Cartographer实现双雷达建图

TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 2 --执行一次前端匹配需要的激光扫描分段数量。关于num_subdivisions_per_laser_scan。num_laser_scans =2,--订阅激光扫描话题数量。Frame改为 前雷达laser_1 后雷达laser_2。雷达的话题由scan改为,前scan_1 后scan_2。有些人说需要改成2,但我这里改成2反而不行,1才可以。

Studying…… 1261

【同等学力】2004-数学⭐✨

1.有些人勤奋,但并非所有人都勤奋。2.不管白猫黑猫,抓住老鼠就是好猫

super_mochi1 512

Android 热修复 Tinker接入及源码浅析

一、概述 放了一个大长假,happy,先祝大家2017年笑口常开。 假期中一行代码没写,但是想着马上要上班了,赶紧写篇博客回顾下技能,于是便有了本文。 热修复这项技术,基本上已经成为项目比较重要的模块了。主要因为项目在上线之后,都难免会有各种问题,而依靠发版去修复问题,成本太高了。 现在热修复的技术基本上有阿里的AndFix、QZone的方案、美团提出的思想方案以及腾讯的Tinker等。

Hongyang 5万+

QT实现警报应用程序

QT实现警报应用程序

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2043

Android 热修复技术浅析

转载请注明本文出自 clevergump 的博客:http://blog.csdn.net/clevergump/article/details/54782635, 谢谢! 一. 热修复技术简介 什么是热修复技术? 通过向用户下发补丁包的方式, 让应用能够在无需重新安装的情况自动集成补丁包, 实现更新的技术. 二. 热修复技术的优缺点 优点: 无需重新发布

clevergump的专栏 2134

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

安卓之热修复的原理以及解决方案

在当今快速迭代的应用开发环境中,热修复技术(Hot Fix)成为了一个重要的工具。特别是在Android平台上,热修复提供了一种在运行时修复应用程序缺陷的方法,而无需重新发布应用程序。本文将深入探讨安卓热修复的原理、解决方案、优缺点以及适用场景。

wlred1980的博客 2519

Android热修复原理及代码修复方案

在Android应用开发中,热修复技术被越来越多的开发者所使用,也出现了很多热修复框架,比如:AndFix、Tinker、Dexposed和Nuwa等等。如果只是会这些热修复框架的使用那意义并不大,我们还需要了解它们的原理,这样不管热修复框架如何变化,只要基本原理不变,我们就可以很快的掌握它们。这一个系列不会对某些热修复框架源码进行解析,而是讲解热修复框架的通用原理

z20131410的博客 1564

Android 热修复原理篇及几大方案比较

热修复说白了就是”即时无感打补丁”,比如你们公司上线一个app,用户反应有重大bug,需要紧急修复。2015年以来 ,15年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案.如果按照通常做法,那就是程序猿加班搞定bug,然后测试,重新打包并发布。这样带来的问题就是成本高,效率低。于是,热修复就应运而生.一般通过事先设定的接口从网上下载无Bug的代码

风离紫竹zhangqiang的博客 1万+

Android热修复实现方案深度分析

Android 热修复是一个涉及虚拟机机制、类加载、资源管理、Native 层的复杂技术。没有完美的“银弹”方案,选择时需要根据应用的具体需求(修复范围、生效时间、稳定性要求、性能、成本)进行权衡。Tinker (全量替换)是当前开源首选。Sophix (混合方案)是优秀的商业化选择。Robust (改进的底层替换)可作为特定场景下的补充(但非主力)。过时的插桩方案、高风险的纯底层替换 (AndFix)、以及仅用于开发的 Instant Run。

JMY_2016的博客 1094

android热修复原理总结

背景当app发布之后如果出现了紧急的线上bug,整个公司都会为此忙的焦头烂额,现公司如果线上出现严重的P1级bug,甚至大半夜整个项目组都得来紧急修复上线,而bug的原因可能仅仅是传错了参数,或者写错一行代码,而且修复后的app又得重新上架,直到用户更新后bug才会被修正。那热修复技术的出现就能很大程度上缓解这种情况,修复后不需要重新上架,用户也不需要重新下载安装。原理github上的热修复框架如n

liubaill的专栏 2985

Android热修复原理(一)热修复框架对比和代码修复

刚发布的版本出现了严重的bug,这就需要去解决bug、测试并打渠道包在各个应用市场上重新发布,这会耗费大量的人力物力,代价会比较大。已经改正了此前发布版本的bug,如果下一个版本是一个大版本,那么两个版本的间隔时间会很长,这样要等到下个大版本发布再修复bug,这样此前版本的bug会长期的影响用户。版本升级率不高,并且需要很长时间来完成版本覆盖,此前版本的bug就会一直影响不升级版本的用户。有一个小而重要的功能,需要短时间内完成版本覆盖,比如节日活动。为了解决上面的问题,热修复框架就产生了。

qq_39431405的博客 801
上一篇: Android性能优化—耗电优化
下一篇: 怎么回事,又被攻击?
码农驿站
博客等级 码龄10年 5粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值