美文网首页
Andfix Android之热修复

Andfix Android之热修复

作者: Scus | 来源:发表于2018-12-29 17:04 被阅读0次

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

    什么是热修复技术?

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

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

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

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

    AndFix原理和优势

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

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

    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());

    补丁内部替换流程说明:

    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. 局限性

    无法添加新类和新字段

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

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

    相关文章

      网友评论

          本文标题:Andfix Android之热修复

          本文链接:https://www.haomeiwen.com/subject/vhjplqtx.html