热更新

Android热更新

修改线上版本的bug,用技术去实现不更新整个apk的条件下,修改掉bug。

在开发过程中,没有一个app发布到市场之后,在用户的使用过程中百分百会发生崩溃,一般情况下不是B线的crash,只要控制app在crash一定的比例,常用的比例在千分之一以下就可以。但是在某些情况下,由于测试的不充分,比如开发人员开发的不严谨导致app经常性的崩溃,而这个崩溃的比率超过正常的话,比如说超过了千分之一,甚至超过了千分之二分贝以后,在这些情况下我们只能紧急的修复出现线上的问题,然后我们通过常用的方式,代码修改然后进行重新打包然后发布等等。同时在发布完要通过推送,消息的形式告诉用户要更新了要自动安装。安卓热修复技术出现,让我们能够更快速的解决一些问题,而不需要重新发布版本可以修复线上的BUG。

一,热更新流程

1.线上检测到严重的crash。因为每一个app都会集成一些线上的crash的sdk,这样会通过线上的sdk检查到app的运作状况,这其实就是一个热修复的基础。在线上的crash统计中,可以得知app是否存在需要快速在线热修复的问题,如果存在,会根据crash日志定位到代码所存在的问题所在。

2.拉出bugfix分支并在分支上修复问题。开发都是在debug分支上开发的,如果有单独的业务逻辑,可以从debug开启另外一个分支来进行开发,在bugfix分支上修复一些线上的问题

3.Jenkins构建和补丁生成

4.app通过推送或主动拉取布丁文件,并在合适时机推送给主用户。

5.将bugfix代码合到master上,这样会保证以后的代码不会出项这样的问题。

二,主流热更新框架介绍

1.Dexposed Dexposed是一个阿里巴巴无线事业部推出的Android平台的无侵入运行期AOP开源框架,基于 Xposed 开源项目,旨在解决像性能监控、在线热补丁等移动开发常见难题。

2.AndFix AndFix,全称是Android hot-fix。是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 6.0,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime,补丁文件是以 .apatch 结尾的文件。

3.Nuwa 基于类加载器ClassLoder加载desk,它的基础是desk分包的基础上。

三,热更新原理

1.Android类加载机制

*1 PathClassLoader 用于加载系统的类和应用类

*2 DexClassLoader 用于加载dex文件,jar文件jar包等等。用DexClassLoader加载文件的

2.热修复机制

*1 dexElements数组。

*2 ClassLoader会遍历这个数组。

然后根据crash定位,导到对应的类文件,然后把这个类文件打包成dex文件,修改这个类以后把这个dex文件打包放到dexElements数组最前面,然后再通过类加载器去加载的时候,他就不会加载到处于后面的dex文件,这样就完成了整个热修复的过程。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容