1:需求背景

项目上线之后,发现BUG需要修复(比如安卓兼容性等测试难以发现的问题),频繁的更新影响用户体验

2:方案要求

静默下载,耗费流量少,打完补丁后立刻生效,不用重启apk

3:解决思路

3.1:使用andfix,打出差异包,使用补丁的方式安装
3.2:缺陷:只能支持源码级别函数的修改(全局变量、新增、删除方法都是无效的)

4:修复BUG、创建差异包步骤

基于andfix原理,每次版本更新后,之前版本打的热修复补丁都会失效,这也符合我们上图的修复步骤。

因为每次热修复的修改,都会被合并到下个版本中了

5:APK热修复打补丁流程

补充描述:

1:服务端补丁包字段如下:

  • patchId: 补丁包的唯一标识md5值,用于客户端校验补丁包合法性,以及本地记录该补丁包是否已经打过
  • url:下载地址

2:客户端打包记录表:

使用sqlLite记录每次打包的结果,用于避免重复打包,字段如下:

  • patchId:同上文
  • isSuccess: 打包是否成功

3:apk版本号

我们目前使用VersionCode作为版本号

6:常见问题

1:后台静默下载热修复补丁,会不会耗费流量?

一般而言,每次热修复补丁的体积仅为4KB左右,仅涵盖两个版本差异部分

2:andfix兼容性怎么样?

目前试验了oppo、小米、魅族、moto、nexus,涵盖android 4.0~6.0;

仅在oppo上发现了打补丁包会出现闪退的情况,但是再次进入,发现补丁包已经生效了

把打补丁这个过程放到子线程之后,oppo崩溃的情况没再出现

3:android 6.0权限问题会影响到热修复吗?

会。因为下载补丁需要涉及到读取和写入外置存储设备权限,当然了,你也可以把补丁包放置在内部存储设备上避免这个问题

4:下载的补丁包删除了,会使得补丁失效吗?

不会,只要打成功了,就永久可用了。只有apk版本升级之后,才会使之前打上的补丁包失效

5: 用不同的秘钥打出来的热修复包可以使用吗?

不可以,andFix源码里面有对修复包携带的秘钥信息进行判断,安全性很高。

《android基于andFix的热修复方案》思路篇的更多相关文章

  1. 《android基于andFix的热修复方案》实战篇

    有篇文章说的比较简洁,大家可以参考下:AndFix使用说明 下面说说实际使用中遇到的问题 1:如何继承到gradle项目中 dependencies { compile 'com.alipay.eul ...

  2. 基于AndFix的热修复 成功后简单的总结总结错失

    首先了解热修复是什么东西?? 就我自己简单的理解:就是不须要又一次打包 公布到市场 然后再让用户又一次下载就能够把一些小bug和需求通过补丁的形式进行改动. 然后如今的热修复方式有大致的三种: 1.d ...

  3. Android 热修复方案Tinker(一) Application改造

    基于Tinker V1.7.5 Android 热修复方案Tinker(一) Application改造    Android 热修复方案Tinker(二) 补丁加载流程    Android 热修复 ...

  4. Android 热修复方案Tinker

    转自:http://blog.csdn.net/l2show/article/details/53925543 Android 热修复方案Tinker(一) Application改造 Android ...

  5. Android 插件化和热修复知识梳理

    概述 在Android开发中,插件化和热修复的话题越来越多的被大家提及,同时随着技术的迭代,各种框架的发展更新,插件化和热修复的框架似乎已经日趋成熟,许多开发者也把这两项技术运用到实际开发协作和正式的 ...

  6. Android 类加载原理 和热修复——深入浅出原理与实现

    一.简述 热修复无疑是这2年较火的新技术,是作为安卓工程师必学的技能之一.在热修复出现之前,一个已经上线的app中如果出现了bug,即使是一个非常小的bug,不及时更新的话有可能存在风险,若要及时更新 ...

  7. Android插件化与热修复(六)-微信Tinker原理分析

    Tinker热修复原理分析 热补丁技术是在用户不需要重新安装应用的情况下实现应用更新,可快速解决一些线上问题.热补丁省去了Android应用发布版本的成本,而且用户端的更新也是无感知的. Tinker ...

  8. Android热修复方案比较

    热修复的特点:无需重新发版,实时高效热修复:用户无感知修复,无需下载新的应用,代价小: 修复成功率高,把损失降到最低. 一.热修复开源方案和使用情况 方案名称 方案开发公司 开发时间 Github星评 ...

  9. AndFix Bug 热修复框架原理及源码解析

    作为阿里巴巴开源的 Android 应用热修复工具——AndFix,帮助 Anroid 开发者修复应用的线上问题.Andfix 是 “Android hot-fix” 的缩写. 1.什么是AndFix ...

随机推荐

  1. TCP 连接的 TIME_WAIT 过多 导致 Tomcat 假死

    最近系统二次开发之后,发现使用的 Tomcat 7 会经常假死.前端点击页面无任何反应,打开firebug,很多链接一直在等待服务器的反应.查看服务器的状态,CPU占用很少,最多不超过10%,一般只有 ...

  2. jQuery Validate 表单验证插件----自定义校验结果样式

    一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二.引入依赖包 <script src="../../scripts/j ...

  3. Linux内核阅读相关

    一.likely()与unlikely()函数的意义 http://blog.chinaunix.net/uid-27665626-id-3506567.html 二.TSO.UFO.GSO.LRO. ...

  4. C语言变参问题

    C++中有函数重载这种方法,以供我们调用时要可以不确定实参的个数,其实 C 语言也可以,而且更高明! 我们在stdio.h 中可以看到 printf() 函数的原型: int printf(char ...

  5. beeline vs hive cli

    近期,大数据开发环境升级为cloudera 5.3. 配套的hive版本升级为0.13.1.可以使用心仪已久的分析开窗函数了.但在使用的过程中发现一些问题,仅记于此. 1.在使用hive命令的时候,发 ...

  6. javaScript事件(三)事件对象

    一.事件 二.事件流 以上内容见:javaScript事件(一)事件流 三.事件处理程序 四.IE事件处理程序 以上内容见javaScript事件(二)事件处理程序 五.事件对象 1.认识事件对象 事 ...

  7. 【读书笔记《Android游戏编程之从零开始》】1.Android 平台简介与环境搭建

    简单的记录下笔记,具体可百度! Android SDK (Software Development Kit)- Android 软件开发工具包,用于辅助Android 操作系统软件开发,是开发Andr ...

  8. codeforces 709C C. Letters Cyclic Shift(贪心)

    题目链接: C. Letters Cyclic Shift 题意: 现在一串小写的英文字符,每个字符可以变成它前边的字符即b-a,c-a,a-z这样,选一个字串变换,使得得到的字符串字典序最小; 思路 ...

  9. meate 标签使用介绍

    //禁止浏览器从本地计算机的缓存中访问内容 <meta http-equiv="pragma" content="no-cache"> //清楚缓存 ...

  10. StaticFileMiddleware中间件如何处理针对文件请求

    StaticFileMiddleware中间件如何处理针对文件请求 我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的 ...