Android 热修复

栏目: Android · 发布时间: 5年前

内容简介:什么是热修复技术?当我们已上线的app出现了非常影响用户使用的紧急Bug,通常情况下需要在第一时间线下修复该bug,然后经过一系列测试验证,最后打渠道包在各大应用市场重新发布升级版本,用户通过下载新包完成Bug修复;显然,整个过程很耗时耗力,一定程度上也会影响到用户使用体验,鉴于这种问题存在,热修复框架就产生了。

什么是热修复技术? AndFix 框架替换原理和优势...

什么是热修复技术?

当我们已上线的app出现了非常影响用户使用的紧急Bug,通常情况下需要在第一时间线下修复该bug,然后经过一系列测试验证,最后打渠道包在各大应用市场重新发布升级版本,用户通过下载新包完成Bug修复;

显然,整个过程很耗时耗力,一定程度上也会影响到用户使用体验,鉴于这种问题存在,热修复框架就产生了。

开发人员只需要针对Bug打出补丁推给用户,用户检测到补丁然后自动拉取,修复Bug;

对于Bug的处理,我们不要过于依赖热修复框架,在开发的过程中还是要按照标准的流程做好自测、配合测试人员完成测试流程 。

AndFix原理和优势

  • AndFix,全称是Android hot-fix。是阿里开源的一个Android热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。

  • AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法

Android 热修复

Andfix在项目中使用过程介绍

1. 补丁包生成

1. 正常编译打包生成apk文件(带Bug的),例如:old.apk;

2. 修复Bug后打包生成新的apk文件 例如: new.apk  ;

3. 利用工程中tools文件夹下apkpatch工具生成 .aptch补丁文件;
复制代码
(a). cd 进入tools文件夹下复制代码
(b). 执行 apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <***> -a <alias> -e <***>复制代码
-o <output> : 输出目录
-k <keystore>: 打包所用的keystore
-p <password>: keystore的密码
-a <alias>: keystore 用户别名
-e <alias password>: keystore 用户别名密码
-f <new.apk> :新版本
-t <old.apk> : 旧版本
复制代码

2. 补丁文件上传

将生成的.apkpatch文件 手动上传到服务端 (详细操作暂无)

3. 下载补丁文件

1. 检测补丁包接口 ;
复制代码

在程序初始化时请求接口,检测服务端补丁信息

无补丁:继续初始化框架 <div class="md-section-divider"></div>复制代码
有补丁:执行如下2操作 复制代码
2. 补丁包下载接口 ;
复制代码

下载补丁文件

拉取失败:下次程序进入重新校验补丁包,并下载  复制代码
拉取成功: 执行如下3操作 复制代码
3. 解压缩 ;
复制代码
1.对压缩包进行解压    复制代码
2.校验合法性(文件类型,长度,验证补丁文件的签名,验证优化文件的指纹等)复制代码
4. 解密 ;
复制代码
解密压缩包 复制代码
添加补丁 patchManager . addPatch(路径)复制代码

4. 重启程序,加载补丁,修复bug

patchManager . loadPatch()复制代码

补丁加载通常是在应用程序的初始化阶段(例如Application.onCreate());

补丁内部替换流程说明:

Android 热修复

1.补丁下载到相应目录

2.通过loadPatch方法加载

3.会将补丁复制到app的目录里面,然后下载补丁的文件会被删除

4.如果versionName改变了,将会删除apatch里面所有的补丁。
复制代码

5. 混淆处理

-printmapping proguard.map 首先需要生成mapping文件记录混淆规则,之后可以把printmapping 这句话注释掉,每次只使用applymapping。

-applymapping proguard.map (然后在下面加上) 复制代码
-keepclass*extendsjava.lang.annotation.Annotation 复制代码
-keepclasseswithmembernamesclass*{native ;} 复制代码
-keepclasscom.alipay.euler.andfix.**{ *; } 复制代码

6. 局限性

  1. 无法添加新类和新字段

  2. 无法替换构造函数和Application的onCreate方法

  3. 无法动态加入新功能模块,有别于dex的替换


以上所述就是小编给大家介绍的《Android 热修复》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

自品牌

自品牌

[美] 丹·斯柯伯尔(Dan Schawbel) / 佘卓桓 / 湖南文艺出版社 / 2016-1-1 / 39.80元

什么是自品牌?如何利用新媒体推广自己?如何放大自己的职业优势? 细化到如何巩固“弱联系”人脉?如何在团队里合作与生存?如何开创自己的事业?这些都是职场人不得不面临的问题,但少有人告诉你答案,你需要利用书里分享的高效方法独辟蹊径,把自己变成职场里高性价比的人才。这是一本教你利用新型社交媒体开发职业潜能的自我管理读本,不管你是新人还是老鸟,都可以通过打造自品牌在职场中脱颖而出。如果不甘平庸,就亮......一起来看看 《自品牌》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具