返回顶部
首页 > 资讯 > 移动开发 >Android线上Bug热修复分析
  • 201
分享到

Android线上Bug热修复分析

Android 2022-06-06 12:06:12 201人浏览 八月长安
摘要

  针对app线上修复技术,目前有好几种解决方案,开源界往往一个方案会有好几种实现。重复的实现会有造轮子之嫌,但分析解决方案在技术上的探索和衍变,这轮子还是值得去推动的

  针对app线上修复技术,目前有好几种解决方案,开源界往往一个方案会有好几种实现。重复的实现会有造轮子之嫌,但分析解决方案在技术上的探索和衍变,这轮子还是值得去推动的   关于Hot Fix技术   Hot Fix技术,简单来说是针对线上已发布app出现了bug,在不推送新版本的情况下通过发布修复补丁进行修复。通常是刚上线的app,需要快速线上修复bug,类似的技术叫做热修复或热补丁。    热修复技术能带来什么?   · 让app具有了上线后被修复的可能性,增加事故风险可控性;   · 避免为修复bug而快速增发新版本,让用户“无感”,提升体验;   · 推送新版本app修复时,用户升级覆盖面无法保证;   · 避免增发修复版本的复杂流程,减少发布新版本app成本;   现有的技术方案   目前,从技术解决方案上来说,有以下几种思路:   · Dexposed   来自阿里手淘团队,白衣(花名)基于Xposed实现了Dexposed,在此基础上手淘团队推出了HotPatch二方库。   · AndFix   出自阿里支付宝技术团队,同样是对方法的hook,但未基于Dexposed去实现,避免了在art上运行时存在兼容性问题。   · 基于ClassLoader   QQ空间终端开发团队提供了技术思路,目前基于此实现的热门的开源项目有Nuwa,HotFix,DroidFix,这三种方案的原理却徊然不同,各有优缺点。   关于三者技术的介绍,这里推荐一篇文章:各大热补丁方案分析和比较,这里不做细说。   技术预研   热修复 == 动态替换 == 动态加载   得出上面的等式,是因为热修复一般来说是增发patch文件,避免用户调用错误代码,并不是直接修改了原来的代码。这相当于是对问题文件做了动态替换,而要实现动态替换是避免默认的加载,改变成动态地加载替换文件。   动态加载的基础是ClassLoader,Java程序在运行时加载对应的类是通过ClassLoader来实现的, Java 类可以被动态加载到 Java 虚拟机中并执行。所以ClassLoader所做的工作实质是把类文件从硬盘读取到内存中。

AndFix示例图

  Java中ClassLoader的基本概念:

  

  · 类加载器的树状结构:在JVM中,所有类加载器实例按树状结构组织,根结点为引导类加载器。除根结点外的所有类加载器都有一个非空的父类加载器,从而构成树状结构;   · 双亲委托(代理)模型:当类加载器收到加载类或资源的请求时,通常都是先委托给父类加载器加载,也是说只有当父类加载器找不到指定类或资源时,自身才会执行实际的类加载过程;   代理模式是为了保证 Java 核心库的类型安全。通过代理模式,对于 Java 核心库的类的加载工作由bootClassLoader来统一完成,保证了 Java 应用所使用的都是同一个版本的 Java 核心库的类,是互相兼容的。   · 类的判等:即使类完全相同(名称相同、字节码相同),不同类加载器实例加载的类对象也是不相等的;   这条规则是Java类加载机制中非常核心的规则,它保证了类加载机制实现“类隔离”、“保护jdk中的基础类”等目标。   · 类的垃圾回收:只有当类加载器可被作为垃圾回收的前提下,其加载的类才有可能被回收;   源码分析ClassLoader机制


--结束END--

本文标题: Android线上Bug热修复分析

本文链接: https://lsjlt.com/news/28705.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android线上Bug热修复分析
      针对app线上修复技术,目前有好几种解决方案,开源界往往一个方案会有好几种实现。重复的实现会有造轮子之嫌,但分析解决方案在技术上的探索和衍变,这轮子还是值得去推动的 ...
    99+
    2022-06-06
    Android
  • react hooks线上bug后分析
    这篇“react hooks线上bug后分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“react hooks线上bug后...
    99+
    2023-06-27
  • Android接入热修复的示例分析
    Android接入热修复的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。AndroidManinifest.xml中加入权限 <uses-permi...
    99+
    2023-06-29
  • Android热修复技术原理之资源热修复技术的示例分析
    小编给大家分享一下Android热修复技术原理之资源热修复技术的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、普遍的实现方式目前市面上的很多资源热修复...
    99+
    2023-06-20
  • Arthas线上项目BUG调试实例分析
    本文小编为大家详细介绍“Arthas线上项目BUG调试实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Arthas线上项目BUG调试实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Arthas简介A...
    99+
    2023-07-02
  • Moment的feature导致线上bug解决分析
    目录bug的出现bug排查bug的根因解决方案bug的出现 这一天,本来是平平淡淡的一天,我正准备一如既往的到点下班,结果qa说线上出了个匪夷所思的bug。 表象为:用户在日期选择器...
    99+
    2024-04-02
  • Win10RS2预览版14915修复内容和bug总结分析
    这篇文章主要介绍“Win10RS2预览版14915修复内容和bug总结分析”,在日常操作中,相信很多人在Win10RS2预览版14915修复内容和bug总结分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”W...
    99+
    2023-06-14
  • Git多人协同开发紧急修复线上bug操作指南
    目录使用场景解决思路操作流程附录:Git使用的小技巧Git命令别名总结使用场景 团队协同开发时,生产环境出现bug,需要紧急修复。每位同学在本地开发,对应本地的dev分支,本地测试通...
    99+
    2024-04-02
  • 深入理解Android热修复技术原理之代码热修复技术
    目录一、底层热替换原理1.1、Andfix 回顾1.2、虚拟机调用方法的原理1.3、兼容性问题的根源1.4、突破底层结构差异1.5、访问权限的问题1.5.1、方法调用时的权限检查1....
    99+
    2024-04-02
  • 深入理解Android热修复技术原理之资源热修复技术
    目录一、普遍的实现方式二、资源文件的格式三、运行时资源的解析四、另辟蹊径的资源修复方案4.1、新增的资源及其导致 id 偏移4.2、内容发生改变的资源4.3、删除了的资源4.4、对于...
    99+
    2024-04-02
  • 深入理解Android热修复技术原理之so库热修复技术
    目录一、SO库加载原理二、SO库热部署实时生效可行性分析2.1、动态注册 native 方法实时生效2.2、静态注册 native 方法实时生效2.3、SO实时生效方案总结三、SO库...
    99+
    2024-04-02
  • Android热修复技术原理中的代码热修复技术是什么
    本篇内容主要讲解“Android热修复技术原理中的代码热修复技术是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android热修复技术原理中的代码热修复技术是什么”吧!一、底层热替换原理1...
    99+
    2023-06-20
  • Android中怎么手写热修复dex
    这篇“Android中怎么手写热修复dex”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android中怎么手写热修复dex...
    99+
    2023-07-05
  • Android 手写热修复dex实例详解
    目录现有的热修复框架很多,尤以AndFix 和Tinker比较多今天就来探讨,如何手写一个热修复的功能什么是双亲委托机制话不多说,提出了解决方法,下面着手去实现总结现有的热修复框架很...
    99+
    2023-03-06
    Android 手写热修复dex Android dex
  • Android接入阿里云热修复介绍
    1.AndroidManinifest.xml中加入权限 <uses-permission android:name="android.permission.INTERNET...
    99+
    2024-04-02
  • 分析Android中线程和线程池
    目录前言HandlerThreadIntentService线程池的好处ThreadPoolExecutor线程池的分类FixedThreadPoolCachedThreadPool...
    99+
    2024-04-02
  • MySQL 5.7并发复制隐式bug实例分析
    前言 我们MySQL线上环境大部分使用的是5.7.18的版本,这个版本已修复了很多bug,但针对主从复制的bug还是有很多的,尤其是一些组复制、并行复制的bug尤为突出,在5.7.19版本有做相应改善和修复...
    99+
    2024-04-02
  • 十个修复IE6下bug技巧分别是什么
    这期内容当中小编将会给大家带来有关十个修复IE6下bug技巧分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。10个修复IE6下bug技巧IE6的末日即将来临,对我...
    99+
    2024-04-02
  • JavaScript中常见的BUG及其修复方法分享
    这篇文章主要讲解了“JavaScript中常见的BUG及其修复方法分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中常见的BUG及其修复方法分享”吧!如今网站几乎100...
    99+
    2023-06-04
  • Android热修复及插件化原理示例详解
    目录1.前言2.类加载机制3.Android类加载4.Tinker原理代码实现5.插件化5.1 Activity启动流程简单介绍5.2 插件化原理5.2.1 绕开验证5.2.2还原插...
    99+
    2022-11-13
    Android热修复插件化 Android热修复
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作