文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android线上Bug热修复分析

2022-06-06 12:55

关注

  针对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机制


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯