热修复 常见的热修复框架简介

Posted baiqiantao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了热修复 常见的热修复框架简介相关的知识,希望对你有一定的参考价值。

常见的几个热修复框架的对比

热修复框架的种类繁多,按照公司团队划分主要有以下几种:
类别成员
阿里系AndFix、Dexposed、阿里百川、Sophix
腾讯系微信的Tinker、QQ空间的超级补丁、手机QQ的QFix
知名公司美团的Robust、饿了么的Amigo、美丽说蘑菇街的Aceso
其他RocooFix、Nuwa、AnoleFix

虽然热修复框架很多,但热修复框架的核心技术主要有三类,分别是代码修复、资源修复和动态链接库修复,其中每个核心技术又有很多不同的技术方案,每个技术方案又有不同的实现,另外这些热修复框架仍在不断的更新迭代中,可见热修复框架的技术实现是繁多可变的。

部分热修复框架的对比如下表所示:
特性AndFixTinker/AmigoQQ空间Robust/Aceso
即时生效
方法替换
类替换
类结构修改
资源替换
so替换
支持gradle
支持ART
支持android7.0
我们可以根据上表和具体业务来选择合适的热修复框架,当然上表的信息很难做到完全准确,因为部分的热修复框架还在不断更新迭代。

从表中也可以发现Tinker和Amigo拥有的特性最多,是不是就选它们呢?也不尽然,拥有的特性多也意味着框架的代码量庞大,我们需要根据业务来选择最合适的,假设我们只是要用到方法替换,那么使用Tinker和Amigo显然是大材小用了。另外如果项目需要即时生效,那么使用Tinker和Amigo是无法满足需求的。

Tinker、AndFix 等框架的比较

Tinker的功能非常强大,基本除了AndroidManifest.xml文件和tinker本身少数几个类之外,其他内容都能替换,包括布局、资源
但是接入麻烦,上手难度较AndFix高很多。

和Tinker不同, AndFix上手非常容易, 只需寥寥数行代码即可,但没有Tinker功能多。
由于AndFix实现原理是底层通过c++直接操作指针实现,它可以做到加载补丁后实时生效,但它目前只支持替换方法实现内容,不能增加类也不能增加、修改字段。

TinkerQZoneAndFixRobust
类替换yesyesnono
So替换yesnonono
资源替换yesyesnono
全平台支持yesyesyesyes
即时生效nonoyesyes
性能损耗较小较大较小较小
补丁包大小较小较大一般一般
开发透明yesyesnono
复杂度较低较低复杂复杂
gradle支持yesnonono
Rom体积较大较小较小较小
成功率较高较高一般最高
技术分享图片

注意事项

  • 在本地动态执行远端下发的代码是极度危险的行为,利用此方法执行非法代码等或用于绕过 Google Play 等市场的审查是违反相关协议的,也是对用户极度不负责任的行为。
  • 在一些访问非常密集的地方使用热更新可能会对效率产生相对比较大的影响,应该避免使用。
  • 我们可以对 Java 的 ScriptEngine 进行一些封装成为一个 HotPatch 类使得它更适合做热更新的工作。
  • 检查热更新补丁的管道一定要建立在 https 上,因为下发代码是极其危险的,如果被劫持,后果是无法想象的。
  • 请求时最好自动带上 Android 版本、手机型号、地区、版本号等信息,以方便更精确地下发,千万不能下发错。
  • Java在运行时加载对应的类是通过ClassLoader来实现的,ClassLoader本身是一个抽象来,Android中使用PathClassLoader类作为Android的默认的类加载器。
  • 我们如果想做hotpatch,一定要保证我们的hotpacth dex文件出现在dexElements列表的前面。

Native 系的几个框架

阿里的 Dexposed 3.9K

dexposed enable ‘god‘ mode上帝视角 for single android application.
技术分享图片

阿里的 AndFix 6K+【主流】

AndFix is a library that offer hot-fix for Android App.
技术分享图片

Java 系的几个框架

微信的 Tinker 12K【主流】

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.
技术分享图片

大众点评的 Nuwa 2.9K

Nuwa is a goddess in ancient Chinese mythology best known for repairing the pillar of heaven. 
女娲是中国古代神话中的女神,以修复天堂柱而闻名。
With this Nuwa project,you can also have the repairing power, fix your android applicaiton without have to publish a new APK to the appstore. 
有了这个Nuwa项目,您还可以拥有修复能力,修复您的Android应用程序而无需将新APK发布到应用商店。
技术分享图片

美团的 Robust 2.7K

Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.
Robust是一款具有高兼容性和高稳定性的Android HotFix解决方案。Robust可以立即修复错误,无需重新启动。
技术分享图片

Qzone超级补丁 HotFix 1.6K

安卓App热补丁动态修复框架
技术分享图片

百度金融的 RocooFix 1.5K

another hotfix framework
技术分享图片

饿了么的 Amigo 1.3K-

A hotfix library for Android platform, and not just this...
技术分享图片


美丽说蘑菇街的 Aceso 1K-

A hotfix library for Android
技术分享图片

2018-6-9























































以上是关于热修复 常见的热修复框架简介的主要内容,如果未能解决你的问题,请参考以下文章

热修复干货| AndFix热补丁动态修复框架使用教程

热修复框架HotFix源码解析

Android热修复框架汇总整理(Hotfix)

走进热修复框架AndFix的世界

AndFix Bug 热修复框架原理及源码解析

探索安卓热修复框架AndFix的奥秘