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热修复的更多相关文章

  1. 包建强的培训课程(15):Android App热修复技术

    @import url(/css/cuteeditor.css); Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈 ...

  2. 关于JSPatch热修复

    今天和同事聊到JSPatch热修复,我们来看下JSPatch,确实解决了APP升级的痛点. 刚好,已经有这么一个第三方平台实现了后台管理,全套服务(网址是:http://jspatch.com/),先 ...

  3. android--------阿里 Sophix移动热修复

    移动热修复(Mobile Hotfix)是阿里云提供的全平台App热修复服务方案.产品基于阿里巴巴首创hotpatch技术,提供最细粒度热修复能力,让您无需等待实时修复应用线上问题. 移动热修复提供的 ...

  4. Android热修复技术选型(不在市场发布新版本的情况下,直接更新app)

    2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以及微信Tinker,它们在原理各有不同,适用场景各异,到 ...

  5. App热补丁动态修复技术介绍

    安卓App热补丁动态修复技术介绍 来自qq空间团队:微信号qzonemobiledev QQ空间终端开发团队 1.背景 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就 ...

  6. android Qzone的App热补丁热修复技术

    转自:https://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731 ...

  7. 热修复-Nuwa学习篇

    nuwa热修复是基于qq空间团队的思路,最近的热度话题了,很多种方案,自己先研究几种方案,基本上都各有优势,学习肯定得先挑个软柿子捏了,自己对比了一下,发现nuwa代码量少点,所以就决定了,先研究nu ...

  8. Android 热修复技术(1)---原理

    热修复技术分为几部分: 原理介绍 Android HotFix源码分析 自定义框架 1.Android分包MultiDex原理 首先Dex是什么东西? Dex就是Window里面的exe文件 也就是可 ...

  9. Android热修复AndFix

    热修复主要用来修复代码.修复bug.添加独立的功能,他的原理主要是操作PathClassLoader.DexClassLoader. PathClassLoader是类加载器,DexClassLoad ...

随机推荐

  1. Java入门 第一季第五章 编程练习解析

    这是我学习慕课网Java课程的笔记.原视频链接为:http://www.imooc.com/learn/85 5-1 基本写法 自己主动补全快捷键:alt + / 5-2 输入输出 使用Scanner ...

  2. OpenCV---在图片上加入文字

    /****************************************** func:cvText desc:put text on an image @param img The ima ...

  3. UML视频总结

    "RUP 4+1"视图 学习UML我们就必须先了解这"RUP 4+1"视图,它是架构设计的结构标准,例如以下图所看到的. watermark/2/text/aH ...

  4. Android进程绝杀技--forceStop(转)

    一.概述 1.1 引言 话说Android开源系统拥有着App不计其数,百家争鸣,都想在这“大争之世”寻得系统存活的一席之地.然则系统资源有限,如若都割据为王,再强劲的CPU也会忙不过来,再庞大的内存 ...

  5. asp.net mvc3的静态化实现

    静态化处理,可以大大提高客户的访问浏览速度,提高用户体验,同时也降低了服务器本身的压力.在asp.net mvc3中,可以相对容易地处理静态化问题,不用过多考虑静态网页的同步,生成等等问题.我提供这个 ...

  6. udhcp源码详解(二)--转

    定义的数据结构对于C程序的重要性,不言而喻.面向对象设计的程序是一个个对象的集合,而面向过程语言设计的程序则是数据结构与算法的集合. 下面来分析的是dhcp server中的定义结构体: 1).在pa ...

  7. [IT学习]转载python 项目 计算器

    这个是从网上搜到的Python小项目之计算器(原文地址:http://www.2cto.com/kf/201402/279637.html).但该段代码估计是Python 2 写的. 如果你使用的程序 ...

  8. yummain.py install yum 不能运行的原因 yummain.py not found

    [root@akinlau ~] wget http://tel.mirrors.163.com/centos/6/os/x86_64/Packages/python-urlgrabber-3.9.1 ...

  9. LeetCode 7. Reverse Integer (JS)

    Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Examp ...

  10. 记一次部署java项目的问题

    项目里面有自动化任务, tomcat 错误信息 Table 'xxx.QRTZ_TRIGGERS' doesn't exist 提示在mysql中找不到这个表. 但mysql中确实存在,但名字是:qr ...