《android基于andFix的热修复方案》思路篇
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的热修复方案》思路篇的更多相关文章
- 《android基于andFix的热修复方案》实战篇
有篇文章说的比较简洁,大家可以参考下:AndFix使用说明 下面说说实际使用中遇到的问题 1:如何继承到gradle项目中 dependencies { compile 'com.alipay.eul ...
- 基于AndFix的热修复 成功后简单的总结总结错失
首先了解热修复是什么东西?? 就我自己简单的理解:就是不须要又一次打包 公布到市场 然后再让用户又一次下载就能够把一些小bug和需求通过补丁的形式进行改动. 然后如今的热修复方式有大致的三种: 1.d ...
- Android 热修复方案Tinker(一) Application改造
基于Tinker V1.7.5 Android 热修复方案Tinker(一) Application改造 Android 热修复方案Tinker(二) 补丁加载流程 Android 热修复 ...
- Android 热修复方案Tinker
转自:http://blog.csdn.net/l2show/article/details/53925543 Android 热修复方案Tinker(一) Application改造 Android ...
- Android 插件化和热修复知识梳理
概述 在Android开发中,插件化和热修复的话题越来越多的被大家提及,同时随着技术的迭代,各种框架的发展更新,插件化和热修复的框架似乎已经日趋成熟,许多开发者也把这两项技术运用到实际开发协作和正式的 ...
- Android 类加载原理 和热修复——深入浅出原理与实现
一.简述 热修复无疑是这2年较火的新技术,是作为安卓工程师必学的技能之一.在热修复出现之前,一个已经上线的app中如果出现了bug,即使是一个非常小的bug,不及时更新的话有可能存在风险,若要及时更新 ...
- Android插件化与热修复(六)-微信Tinker原理分析
Tinker热修复原理分析 热补丁技术是在用户不需要重新安装应用的情况下实现应用更新,可快速解决一些线上问题.热补丁省去了Android应用发布版本的成本,而且用户端的更新也是无感知的. Tinker ...
- Android热修复方案比较
热修复的特点:无需重新发版,实时高效热修复:用户无感知修复,无需下载新的应用,代价小: 修复成功率高,把损失降到最低. 一.热修复开源方案和使用情况 方案名称 方案开发公司 开发时间 Github星评 ...
- AndFix Bug 热修复框架原理及源码解析
作为阿里巴巴开源的 Android 应用热修复工具——AndFix,帮助 Anroid 开发者修复应用的线上问题.Andfix 是 “Android hot-fix” 的缩写. 1.什么是AndFix ...
随机推荐
- MySQL的诡异同步问题-重复执行一条relay-log
MySQL的诡异同步问题 近期遇到一个诡异的MySQL同步问题,经过多方分析和定位后发现居然是由于备份引发的,非常的奇葩,特此记录一下整个问题的分析和定位过程. 现象 同事扩容的一台slave死活追不 ...
- 使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL , ...
- 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备
相信很多人或多或少听说了微信公众平台的火热.但是开发还是有一点门槛,鉴于挺多朋友问我怎么开发,问多了,自己平时也进行以下总结.所以下面给大家分享一下我的经验: 微信公众号是什么? 官网的介绍:再小的个 ...
- .net framework 4.6.2 下载
.net framework .net framework版本: 4.6.2 File Name: NDP462-KB3151800-x86-x64-AllOS-ENU.exe 发布日期: 201 ...
- POJ 3687 Labeling Balls()
Labeling Balls Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9641 Accepted: 2636 Descri ...
- PAC学习框架
PAC学习框架是机器学习的基础.它主要用来回答以下几个问题: 什么问题是可以高效学习的? 什么问题本质上就难以学习? 需要多少实例才能完成学习? 是否存在一个通用的学习模型? PAC=probably ...
- 初始化 Ubuntu Trusty 14.04
1. 软件源 sudo vim /etc/apt/source.list # 将软件源改为 sohu 的 deb http://mirrors.sohu.com/ubuntu/ trusty main ...
- Codeforces Round #257(Div.2) D Jzzhu and Cities --SPFA
题意:n个城市,中间有m条道路(双向),再给出k条铁路,铁路直接从点1到点v,现在要拆掉一些铁路,在保证不影响每个点的最短距离(距离1)不变的情况下,问最多能删除多少条铁路 分析:先求一次最短路,铁路 ...
- Spring MVC Spring MyBatis 整合 - 快速上手
我个人比较喜欢写注释,在工作中对注释的重要性看的也比较高,所以大部分文字都在注释中,代码外的文字会写的偏少,关键能懂就行 先看一下整合后的工程目录(单工程,多工程以后会采用maven) 5个packa ...
- android窗口泄漏,isInEditMode解决可视化编辑器无法识别自定义控件的问题
android窗口泄漏 在做项目是遇到这个错误:google:WindowManager: Activity has leaked window. 产 生原因:我们知道Android的每一个Activ ...