阿里热更新Sophix的故事

热更新系列目录

  1. 热更新你都知道哪些?
  2. 热更新Sophix的爬坑之路
  3. 腾讯热更新Tinker的故事
  4. 阿里热更新Sophix的故事

热更新Sophix

博客创建时间:2021.02.24
博客更新时间:2021.02.24

很早以前就有写Sophix的博客,但是使用一段时间后有了新的感受和心得,重新整理出该篇博客。

在这里插入图片描述


Sophix

Sophix是阿里云提供的全平台App热修复服务方案。产品基于阿里巴巴首创hotpatch技术,提供最细粒度热修复能力,让您无需等待实时修复应用线上问题。

Sophix热修复技术是在Andfix技术基础上吸收了Tinker的优点后,出现的一种目前为止最强大的热修复技术框架。

关于Tinker的介绍可以阅读本人的另一篇博客《热更新Tinker类加载原理》,该篇博客会详细介绍Tinker热修复的原理。


核心原理
Sophix热更新的实质有两种更新方案:底层方法替换+类加载替换。它的补丁包是一种.jar格式。

AndFix和Tinker分别是阿里系和腾讯系采用的两种热修复技术方案,其热修复的核心思想是**底层方法替换** 与 类加载替换。 两种方案各有利弊,Sophix基本兼容了两者的优点,功能更加强大,稳定而便捷。

底层方法替换:为了解决Andfix存在的底层替换兼容性问题,Sophix做了一些额外的努力。Sophix通过动态测试ArtMethod的Size(通过c层的mempy(dest、src、size)方法),进行全量拷贝。只要对当前虚拟机中的ArtMethod进行统一拷贝,完成替换就能消除不同虚拟机的导致的Artmethod结构差异。.


优点

  1. Sophix具有底层替换的修改及时性和类加载方案的兼容性,Sophix吸收了百川Hotfix和Tinker的优点于一生,会自动判断在打补丁时选用哪种方案。
  2. Sophix采用非侵入式接入与打包,接入成本低,图形化补丁生成,”傻瓜式接入”。
  3. 阿里提过了补丁管理平台,无需开发者自己在服务器中开发管理功能。
  4. 部分更新无需重启软件,下载的patch极小,相比其他方案,通过两种更新方案,修复成功率极高。

Andfix

AndFix不同于QQ空间超级补丁技术和微信Tinker通过增加或替换整个DEX的方案,提供了一种运行时在Native修改Filed指针的方式,实现方法的替换,达到即时生效无需重启,对应用无性能消耗的目的

Andfix采用的方法替换的热更新方案,其热更新流程。
在这里插入图片描述

在这里插入图片描述

Andfix优点:

  1. BUG修复的即时性,对应用无侵入,几乎无性能损耗
  2. 补丁包同样采用差量技术,生成的PATCH体积小

不足:

  1. 不支持新增字段,以及修改方法,也不支持对资源的替换。

  2. 由于厂商的自定义ROM,对少数机型暂不支持。

    Andfix的ArtMethod方法结构是根据Android开源代码写死的,面对国内厂商的定制,经常会导致两者ArtMethod方法结构不一致,这也是兼容问题产生的根本原因。


相关链接

  1. 热更新你都知道哪些?
  2. 热更新Sophix的爬坑之路
  3. 腾讯热更新Tinker的故事
  4. 阿里热更新Sophix的故事

扩展链接:

  1. ART与Dalvik、JVM之间的关系你懂了吗?
  2. System.exit(0) 与 android.os.Process.killProcess(android.os.Process.myPid())

博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值