热修复干货| AndFix热补丁动态修复框架使用教程
本篇文章会与大家一起学习使用阿里的AndFix热修复框架,可以说AndFix是国内热修复技术的开山始祖,尽管现在阿里已经放弃了对这个项目的维护,但是后来很多的热修复技术都借鉴了这一框架的实现思路。
1.什么是AndFix?
AndFix是阿里巴巴出的一个专门针对Android的热修复框架
,那什么是热修复呢?就是不需要重新安装APK而达到修复bugs的目的。
看看阿里巴巴官方对AndFix的描述:
英文好的可以看官网说明文档(有翻译不妥欢迎指出)
1.AndFix是一个Android库,它是在线解决bugs,而不是重新安装app的一种解决方案。
2.AndFix是Android hot-fix
的缩写
3.AndFix 支持Android的2.3-7.0的版本,支持ARM和X86的处理器,支持Dalvik与ART的运行时,支持32位和64位。
4.AndFix的补丁文件的格式是.apatch
,它是由您自己的服务器分发到客户端解决您的应用程序的错误。
2.AndFix的原理
AndFix的实现原理是方法体的替换

3.修复过程

4.获取AndFix库
直接将AndFix AAR添加到您的项目作为编译库。
对于Maven的依赖:
<dependency>
<groupId>com.alipay.euler</groupId>
<artifactId>andfix</artifactId>
<version>0.5.0</version>
<type>aar</type>
</dependency>
对gradle的依赖:
dependencies {
compile 'com.alipay.euler:andfix:0.3.1@aar'
}
5.如何使用AndFix
1.初始化PatchManager
patchManager = new PatchManager(context);
patchManager.init(appversion);//current version
2.加载补丁
patchManager.loadPatch();
你应该尽可能早地加载补丁,通常在你的应用程序初始化阶段加载补丁,例如:在Application.onCreate()
中加载补丁
3.添加补丁
patchManager.addPatch(path);//path of the patch file that was downloaded
当一个新的补丁文件已经下载,,通过调用了addPatch()方法就会立即生效。
6.补丁制作工具
1.下载补丁制作工具
AndFix 给我们提供了一个制作补丁的工具apkpatch
2.使用补丁工具
1.准备两个android apk文件 , 一个是在线的apk文件,另一个是修复bug后的apk文件(两个apk的版本号一样)
2.通过这两个apk文件生成一个补丁文件.apatch
//在补丁的工具文件夹中,打开控制台,并在控制台输入:
apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <> -a <alias> -e <>
//参数说明:
-a,--alias <alias> keystore entry alias.
-e,--epassword <***> keystore entry password.
-f,--from <loc> new Apk file path.
-k,--keystore <loc> keystore path.
-n,--name <name> patch name.
-o,--out <dir> output dir.
-p,--kpassword <***> keystore password.
-t,--to <loc> old Apk file path.
3.在控制台中执行上面命令后,在指定的<output>文件夹中后会生成,如下文件:
smali
app-release1-44c095be1acbdd01beed3afd478182f0.apatch
diff.dex
其中app-release1-44c095be1acbdd01beed3afd478182f0.apatch
就是补丁文件。
本篇和大家一起学习了什么是AndFix,以及在发现Bug后使用AndFix生成一个补丁包并进行热更新修复,也大概讲了一下在实际生产环境中实现热更新修复功能的流程,并简单地封装了在网络环境中实现热更新修复的功能。
热修复干货| AndFix热补丁动态修复框架使用教程的更多相关文章
- Android 热补丁动态修复框架小结
一.概述 最新github上开源了很多热补丁动态修复框架,大致有: https://github.com/dodola/HotFix https://github.com/jasonross/Nuwa ...
- 安卓App热补丁动态修复技术介绍
版权声明:本文由johncz原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/169 来源:腾云阁 https://www.q ...
- App热补丁动态修复技术介绍
安卓App热补丁动态修复技术介绍 来自qq空间团队:微信号qzonemobiledev QQ空间终端开发团队 1.背景 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就 ...
- Android热补丁动态修复
1.前言 由于公司项目中使用到热修复技术,之前对这块技术知之甚少,所以有时间去学习了解了一下. 2.学习资源 2.1 热修复介绍 还是鸿洋老师的精彩讲解,中间引用了Andorid dex分包方案和QQ ...
- 安卓热修复之AndFIX
我致力于最新的前沿安卓技术分析和使用教学,不打算将很多很深的东西,因为有多少人愿意沉下你的心境去学习难点?我一般只会简单提及.文字错漏在所难免还希望同学们喜欢 热修复介绍 热修复是什么? 如果你一个项 ...
- Andfix热修复原理
一.前言 最近腾讯弄出一个Tinker热修复框架,那么本文先不介绍这个框架,先来介绍一下阿里的一个热修复框架AndFix,这个框架出来已经很长时间了,但是看网上没有太多非常详细的讲解,这里就来做一次分 ...
- Andfix热修复框架原理及源代码解析-上篇
热补丁介绍及Andfix的使用 Andfix热修复框架原理及源代码解析-上篇 Andfix热修复框架原理及源代码解析-下篇 1.不知道怎样使用的同学,建议看看我上一篇写的介绍热补丁和Andfix的使用 ...
- 阿里 AndFix 热修复框架简介
阿里AndFix热修复框架简介 热修复原理: Android的类加载机制 Android的类加载器分为两种,PathClassLoader和DexClassLoader,两者都继承自BaseDexCl ...
- ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入、和使用、.js文件传输加解密
JSPatch ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入.和使用..js文件传输加解密 ios开发面临审核周期长,修复bug延迟等让人无奈的问题,所以 ...
随机推荐
- 数组splay ------ luogu P3369 【模板】普通平衡树(Treap/SBT)
二次联通门 : luogu P3369 [模板]普通平衡树(Treap/SBT) #include <cstdio> #define Max 100005 #define Inline _ ...
- linux线程操作
初始化条件变量 int pthread_cond_init(pthread_cond_t *cv,pthread_cond_attr *cattr); 函数返回值:返回0表示成功,返回其他表示失败. ...
- RabbitMQ面试问答(子文章)(持续更新)
-----> 总文章 入口 文章目录 [-----> 总文章 入口](https://blog.csdn.net/qq_37214567/article/details/90174445) ...
- [WEB安全]SSRF中URL的伪协议
当我们发现SSRF漏洞后,首先要做的事情就是测试所有可用的URL伪协议 0x01 类型 file:/// dict:// sftp:// ldap:// tftp:// gopher:// file: ...
- Zabbix优化
参考 zabbix默认的配置即使机器128核心,256内存,只能抗住10-20台的监控,如果再多就需要修改配置了. 一.配置文件 server端配置文件添加如下 StartPollers=160 St ...
- Docker理论简答
Docker理论简答: 1. 介绍对docker的认识(10分) Docker是容器,容器不是docker Dockers就是一个文件夹,它欺骗操作系统说自己是一个操作系统,然后把所需要 ...
- python 小技巧,给设计好的dict 增加嵌套值
beijing={} beijing={'} 现在要给beijing的增加一个shanghai1 的嵌套值 beijing['shanghai1']['name']=1 运行: 那么在python3. ...
- pip安装报错Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-e_k8hq6a/pynacl/
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-e_k8hq6a/pyn ...
- 如何在shell脚本中获取当前用户名?
答:使用环境变量USER即可 如在脚本中打印当前用户名; #!/bin/sh echo "user name = ${USER}"
- 001——Angular环境搭建、运行项目、搭建项目
1.安装node.js 和cnpm 2.cnpm install -g @angular/cli 安装angular脚手架: 3.ng new angulardemo cd angulardemo ...