当前位置:   article > 正文

Android -热更新(1)- 背景调查/分析_android 热更新对比

android 热更新对比

转载请声明:本文来自 https://blog.csdn.net/shijianduan1/article/details/84790716


写在最前面, 本篇参考文章:
Android主要热更新技术原理
Android实战——Tinker的集成和使用
Tinker官方说明 Github:Tinker 接入指南

1.各框架对比

TinkerQZoneAndFixRobust
来源微信QQ空间阿里美团
类替换××
So替换×××
资源替换××
全平台支持
即时生效××
性能损耗较小较大较小较小
补丁包大小较小较大一般一般
开发透明××
复杂度较低较低复杂复杂
gradle支持×××
Rom体积较大较小较小较小
成功率较高较高一般最高

2.原理

1)AndFix

核心原理: 在Native层使用指针替换的方式替换bug方法

AndFix采用native hook的方式,这套方案直接使用dalvik_replaceMethod替换class中方法的实现。
由于它并没有整体替换class, 而field在class中的相对地址在class加载时已确定,所以AndFix无法支持新增或者删除filed的情况(通过替换init与clinit只可以修改field的数值)。
Andfix可以支持的补丁场景相对有限,仅仅可以使用它来修复特定问题
  • 1
  • 2
  • 3
2)QZone

核心原理: 基于Android dex分包方案,当多个dex包中有重复的类时(正常的dex没有重复的类),系统会优先选择排在前面的dex文件的类

3)Tinker

核心原理: 将新生成的new.dex与原有的old.dex通过BsDiff算法,得到差异文件,差分包patch.dex,设备端就可以通过算法 使用差分包patch.dex 和 old.dex 还原到new.dex.
微信将算法优化,使用自身的DexDiff算法,来减少补丁包大小

3.缺点

2、Tinker缺点
Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件(1.9.0支持新增非export的Activity);
由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码;
在Android N上,补丁对应用启动时间有轻微的影响;
不支持部分三星android-21机型,加载补丁时会主动抛出”TinkerRuntimeException:checkDexInstall failed”;
对于资源替换,不支持修改remoteView。例如transition动画,notification icon以及桌面图标。
--------------------- 
作者:Hensen_ 
来源:CSDN 
原文:https://blog.csdn.net/qq_30379689/article/details/78575473 
版权声明:本文为博主原创文章,转载请附上博文链接!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/41236
推荐阅读
相关标签
  

闽ICP备14008679号