Tinker热更新介绍

版权声明:转载请付原创连接 https://blog.csdn.net/qq_20957669/article/details/88125978

目录

 1.为什么使用Tinker?

 2.使用Tinker的优势

 3.什么是热更新?

安全隐患

 4.Android热更新技术原理

 5.什么是Tinker?

6.Tinker原理

7.微信Tinker接入简单介绍 

TinkerPatch补丁管理后台

8.为什么选择Tinker 

Tinker缺点

解决Tinker不能及时生效的问题


 1.为什么使用Tinker?

  • 线上App发现严重bug需要进行紧急修复,需要付出巨大的成本进行换包和重新发布。
  • 市场形势瞬息万变,当机会来临时,发布新版本再等用户升级往往来不及。 如果只是很小量的修改,可以采用移动热修复服务

 2.使用Tinker的优势

  • 紧急修复bug,避免用户厌烦,降低了更新频率提升用户体验;
  • 促销活动和头脑风暴性功能能得以快速更新。 (审核需要一到两周时间,审核不通过还要重新修改再审核,市场机遇都没了)

 3.什么是热更新?

热更新是一种各大手游等众多App常用的更新方式。简单来说,就是在用户通过App Store下载App之后,打开App时遇到的即时更新。是一种摆脱传统发版方案直接使用补丁来更新app内容,不需要重新下载安装apk等略过一系列繁琐过程的新兴技术,目前国内部分成熟App都拥有自己的热修复技术,如:手淘、QQ、微信、美团、饿了么等。

常用的热更新技术框架:Dexposed、AndFix,(HotFix)Sophix

Qzone超级补丁,微信的Tinker、美团的robust、大众点评的nuwa、饿了么的amigo、百度金融的rocooFix

2016年,形成了阿里和微信两大派系的热更新方案(支付宝的Andfix和微信的Tinker)

  • 安全隐患

由于软件热更新绕过了苹果的审核,黑客开发者有可能会通过提交正常的版本之后,通过热更新的方式修改APP导致安全隐患,这违反了苹果的安全隐私政策。另外苹果此举既能改善部分使用混编语言的App的流畅性,也能重新掌握一些渠道的App审核权限。

 4.Android热更新技术原理

 这个classes.dex就是所有代码的集合,是一个可执行文件,android运行apk实质是解压apk运行里面的这个的dex文件。

热更新就是通过动态替换dex的方式来实现修复代码的。

 5.什么是Tinker?

Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。阿里的AndFix、美团的Robust以及QZone的超级补丁方案,对比业内,他的优势非常明显:

                                                              

6.Tinker原理

Tinker需要通过新旧包生成差量包diff.dex。不同于其他类加载方案,Tinker采用全量更新。客户端在获得diff.dex后,会开启一个service进行dex文件的合成,合成的全量dex文件插入到dexElements的第一个位置,dexElements里面的每个Element实际上就是Dex文件,classLoader在启动时,会按顺序加载dex文件,使修复类所在的全量dex包被优先加载,从而完成替换。

7.微信Tinker接入简单介绍 

  • TinkerPatch补丁管理后台

TinkerPatch是第三方开发基于CDN分发的补丁管理后台。它提供了脚本后台托管、版本管理,保证传输安全等功能,让你无需搭建一个后台,无需关心部署操作,只需引入一个 SDK 即可立即使用 Tinker。 补丁管理;实现了热补丁的版本管理,补丁的自动重试与异常时自动回退等功能。同时我们可以简单实现条件下发补丁,在出现异常情况时,我们也可以快速回滚补丁;

 

8.为什么选择Tinker 

  • Tinker是开源的,能看到源代码,对开发者来说更加透明
  • Tinker有微信APP做测试,对机型和国内定制系统支持较好
  • Tinker是最先支持Android资源文件热更新的框架
  • Tinker支持新增Activity,可以当插件化框架进行使用
  • 收费较Sophix便宜
  • Tinker更新频率较高,能更好的支持Android最新版本,成功率也较高。

Tinker缺点

  • 在Android N上,补丁对应用启动时间有轻微的影响;
  • 补丁不支持及时生效

解决Tinker不能及时生效的问题

                                                               

总结:Thiker能满足日常开发的所有需求。但是在使用的过程中,除了考虑使用的实用性之外,还应该考虑到安全性,在接入thinker以后,打包的过程是透明的,但是在使用管理平台下发的时候是不透明的,换句话说,这中间做了什么事情,使用者是不清楚的,是否有收集客户信息?抓取反编译项目源码?当然,这是个人不成熟的一些考虑,仅供参考。

猜你喜欢

转载自blog.csdn.net/qq_20957669/article/details/88125978