本篇文章会与大家一起学习使用阿里的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热补丁动态修复框架使用教程的更多相关文章

  1. Android 热补丁动态修复框架小结

    一.概述 最新github上开源了很多热补丁动态修复框架,大致有: https://github.com/dodola/HotFix https://github.com/jasonross/Nuwa ...

  2. 安卓App热补丁动态修复技术介绍

    版权声明:本文由johncz原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/169 来源:腾云阁 https://www.q ...

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

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

  4. Android热补丁动态修复

    1.前言 由于公司项目中使用到热修复技术,之前对这块技术知之甚少,所以有时间去学习了解了一下. 2.学习资源 2.1 热修复介绍 还是鸿洋老师的精彩讲解,中间引用了Andorid dex分包方案和QQ ...

  5. 安卓热修复之AndFIX

    我致力于最新的前沿安卓技术分析和使用教学,不打算将很多很深的东西,因为有多少人愿意沉下你的心境去学习难点?我一般只会简单提及.文字错漏在所难免还希望同学们喜欢 热修复介绍 热修复是什么? 如果你一个项 ...

  6. Andfix热修复原理

    一.前言 最近腾讯弄出一个Tinker热修复框架,那么本文先不介绍这个框架,先来介绍一下阿里的一个热修复框架AndFix,这个框架出来已经很长时间了,但是看网上没有太多非常详细的讲解,这里就来做一次分 ...

  7. Andfix热修复框架原理及源代码解析-上篇

    热补丁介绍及Andfix的使用 Andfix热修复框架原理及源代码解析-上篇 Andfix热修复框架原理及源代码解析-下篇 1.不知道怎样使用的同学,建议看看我上一篇写的介绍热补丁和Andfix的使用 ...

  8. 阿里 AndFix 热修复框架简介

    阿里AndFix热修复框架简介 热修复原理: Android的类加载机制 Android的类加载器分为两种,PathClassLoader和DexClassLoader,两者都继承自BaseDexCl ...

  9. ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入、和使用、.js文件传输加解密

    JSPatch ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入.和使用..js文件传输加解密 ios开发面临审核周期长,修复bug延迟等让人无奈的问题,所以 ...

随机推荐

  1. SSM 整合 ehcache 报错

    异常: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springfra ...

  2. linux管道pipe详解

    linux管道pipe详解 https://blog.csdn.net/qq_42914528/article/details/82023408

  3. ubuntu系统五笔输入法安装

    转载:https://jingyan.baidu.com/article/454316ab67d702f7a7c03a1a.html Ubuntu 16.04 在安装时选择中文安装,安装过程中将自动安 ...

  4. 生成uuid 和 检验

    //注意replaceAll前面的是正则表达式 String uuid = UUID.randomUUID().toString().replaceAll("-","&q ...

  5. HTML5中的article和section的区别

    HTML5中的article和section的区别 一.总结 一句话总结: article和section都相当于语义化后的div,article强调独立性,section强调分段或者分块 1.art ...

  6. 【纸模】六角大王 Super 5.6 CHS 简体中文版 U20080725+[手册]窗口与工具的概要(PDF格式)

    六角大王5.6简体中文版中文化:star21 主界面<ignore_js_op> 人体生成模式<ignore_js_op> 动画<ignore_js_op> < ...

  7. Unity2017 熊猫跑酷

    1.背景 随着移动互联网的快速发展,现在的人们对手机的依赖程度越来越大,以至于为于手机用户量身定做的手机游戏大行其道.正是基于这样的背景,城市跑酷--这个好玩的游戏诞生了 2.机遇 手机触屏时代的到来 ...

  8. 范围指示器Extent Indicators

    范围指示器Extent Indicators 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com   商务合作,科技咨询,版权转让:向日葵,135- ...

  9. WPF ContextMenu DataTemplate MenuItem Visibility 问题

    问题: ContextMenu 的 DataTemplate 中 MenuItem 设置 Visibility 不起作用 需要添加一下样式才可以: <ContextMenu.ItemContai ...

  10. 【Dart学习】--Dart之数组(List)的相关方法总结

    一,初始化List 非固定长度list var testList = List(); print(testList.length);//输出0 固定长度List var testList2 = Lis ...