APP热修复
APP热修复的概念:
APP修复是针对修复app中的bug场景来定义的。当我们已上线的app出现bug的时候,我们想在用户不知情的情况下修复这个bug,那么就会用到热修复。
APP热修复的实现原理:
首先,生成新版本的apk与旧版本的apk的差异补丁包文件;
其次,使用热修复框架的Api在Application中去尝试加载指定路径的补丁差异包;
最后,只需要将补丁差异包宝贝到对应路径,代开有bug的App,在Applcation创建的时候就会将补丁包文件加载到内存中并且替换对应的方法。
常用的热修复框架---阿里的AndFix
使用步骤:
首先,在gradle文件中依赖AndFix类库,并且在Application的onCreate方法中编写加载patch文件的代码:
//经反复测试,0.5的版本不如0.4的版本稳定,因此我们用稳定的版本
//compile 'com.alipay.euler:andfix:0.5.0@aar'
compile 'com.alipay.euler:andfix:0.5.0@aar'
添加加载patch文件的代码:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
PatchManager patchManager = new PatchManager(this);
String appVersion = "1.0";//当前app的版本号
patchManager.init(appVersion);
//开始加载patch文件
patchManager.loadPatch();
File patchFile = new File(Environment.getExternalStorageDirectory(),"out.apatch");
try {
if(patchFile.exists()){
//指定patch文件的路径
patchManager.addPatch(patchFile.getAbsolutePath());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
我们将2个apk文件和签名文件一同复制到AndFix-master\tools\apkpatch-1.0.3目录下,使用apkpatch命令产生出patch文件,命令如下:
apkpatch -f fix.apk -t bug.apk -o bug_fix -k test.jks -p 111111 -a test -e 111111
将patch文件放到指定的路径下,运行带有bug的应用,重新启动application,就会自动覆盖原来的带有bug的代码。
注:不必担心patch文件会被用户误删,因为patch文件已经复制到了应用的包下。
热修复只是用于bug层级的修复,阿里的AndFix只是用于方法的修复,不能对类和Android四大组件进行修复。而且热修复具有不稳定性,而且无法适配所有的手机。
APP热修复的更多相关文章
- 包建强的培训课程(15):Android App热修复技术
@import url(/css/cuteeditor.css); Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈 ...
- 关于JSPatch热修复
今天和同事聊到JSPatch热修复,我们来看下JSPatch,确实解决了APP升级的痛点. 刚好,已经有这么一个第三方平台实现了后台管理,全套服务(网址是:http://jspatch.com/),先 ...
- android--------阿里 Sophix移动热修复
移动热修复(Mobile Hotfix)是阿里云提供的全平台App热修复服务方案.产品基于阿里巴巴首创hotpatch技术,提供最细粒度热修复能力,让您无需等待实时修复应用线上问题. 移动热修复提供的 ...
- Android热修复技术选型(不在市场发布新版本的情况下,直接更新app)
2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以及微信Tinker,它们在原理各有不同,适用场景各异,到 ...
- App热补丁动态修复技术介绍
安卓App热补丁动态修复技术介绍 来自qq空间团队:微信号qzonemobiledev QQ空间终端开发团队 1.背景 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就 ...
- android Qzone的App热补丁热修复技术
转自:https://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731 ...
- 热修复-Nuwa学习篇
nuwa热修复是基于qq空间团队的思路,最近的热度话题了,很多种方案,自己先研究几种方案,基本上都各有优势,学习肯定得先挑个软柿子捏了,自己对比了一下,发现nuwa代码量少点,所以就决定了,先研究nu ...
- Android 热修复技术(1)---原理
热修复技术分为几部分: 原理介绍 Android HotFix源码分析 自定义框架 1.Android分包MultiDex原理 首先Dex是什么东西? Dex就是Window里面的exe文件 也就是可 ...
- Android热修复AndFix
热修复主要用来修复代码.修复bug.添加独立的功能,他的原理主要是操作PathClassLoader.DexClassLoader. PathClassLoader是类加载器,DexClassLoad ...
随机推荐
- POJ 2545+2591+2247+1338简单水题
[题意简述]:就是有这种一个序列.就拿当p1 = 2,p2 = 3, p3 = 5,来举例.由这三个数为基准组成的序列是: 2,3,4,5,6,8,9,10,12--如今给你这个序列数组的下标,让你求 ...
- 2016/05/11 Thinkphp 3.2.2 验证码 使用 及校验
先新建一个公共控制器,用于放置验证码的实例化代码(不用新建控制器也行,任意公共控制器都可以). 例如:PublicController.class.php 4 5 6 7 8 9 10 11 12 1 ...
- 每天进步一点点—mysql-mysqldump
一. 简单介绍 mysqldump是client用来备份数据库或者在不通数据库之间进行数据迁移的工具,备份内容包括创建表或者装载表的SQL语句 二. 命令格式 备份单个数 ...
- 原生ajax请求和jsonp
1.原生ajax请求 var obj = new XMLHttpRequest(); obj.open("POST", url, true); obj.setRequestHead ...
- 设计模式-(17)策略模式 (swift版)
一,概念: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化. 二,使用场景 1.针对同一类型问题的多种处理方式,仅仅是具体行为有差别时: ...
- Powershell 常见问题
unapproved verbs WARNING: The names of some imported commands from the module 'todo' include unappro ...
- android 自定义View开发实战(六) 可拖动的GridView
1前言 由于项目需求,需要把项目的主界面采用GridView显示,并且需要根据模块优先级支持拖动图标(砍死产品狗).为此,自定义了一个支持拖拽图标的GridView.效果如下: 具体效果如上图 2 可 ...
- JSTL1.1函数标签库(functions)如fn:length
JSTL1.1函数标签库(functions)如fn:length 分类: java ssh22012-06-11 09:02 313人阅读 评论(1) 收藏 举报 stringcharacterxm ...
- [Usaco2015DEC] Breed Counting
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4397 [算法] 树状数组 时间复杂度 : O(QlogN) [代码] #includ ...
- 【HDU 2196】 Computer
[题目链接] 点击打开链接 [算法] 我们知道,一棵树上离某个节点最远的节点,可能是经过它的祖先,再到那个祖先的某个孩子,或者,是它的那颗子树中,离它最远的一个节点,就不难想到以下算法 : 第一遍DF ...