Android热修复框架之AndFix

原创 2016年06月01日 13:09:39

AndFix

Github:https://github.com/alibaba/AndFix

AndFix介绍

AndFix是一个Android App的在线热补丁框架。使用此框架,我们能够在不重复发版的情况下,在线修改App中的Bug。AndFix就是 “Android Hot-Fix”的缩写。 
就目前来说,AndFix支持Android 2.3到6.0版本,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime。 
AndFix 的补丁文件是以 .apatch 结尾的文件。 
AndFix是阿里巴巴开源项目。

Android上如何使用

1.在自定义Application中初始化,为了更早的修复应用中的bug

package com.walid.testandfix;

import android.app.Application;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;
import com.alipay.euler.andfix.patch.PatchManager;

import java.io.File;
import java.io.IOException;

/**
 * Author: walid
 * Date : 2015/10/21 15:27
 */
public class MainApplication extends Application {

	private static final String APATCH_PATH =
			Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "apatch" + File.separator + "xiaobai.apatch";
	private PatchManager patchManager;

	@Override
	public void onCreate() {
		super.onCreate();
		// initialize
		patchManager = new PatchManager(this);
		//获取sp内的版本号,如果版本号不同则删除之前所有patch文件
		//patchManager.removeAllPatch();
		patchManager.init(String.valueOf(BuildConfig.VERSION_CODE));
		// load patch
		patchManager.loadPatch();
		try {
			patchManager.addPatch(APATCH_PATH);
			Toast.makeText(this, "apatch:" + APATCH_PATH, Toast.LENGTH_LONG).show();
		} catch (IOException e) {
			Toast.makeText(this, String.valueOf(e), Toast.LENGTH_LONG).show();
		}
	}
}

2.如果有新的补丁需要修复,下载完成后,进行以下操作

//添加patch,只需指定patch的路径即可,补丁会立即生效
patchManager.addPatch(APATCH_PATH);


3.检测当apk版本升级,需要把之前patch文件的删除,需要以下操作

//删除所有已加载的patch文件
patchManager.removeAllPatch();


4、模拟old.apk中bug事件

package com.walid.testandfix;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Toast.makeText(this, "Bug !!!!!", Toast.LENGTH_LONG).show();
	}

}

5、模拟new.apk中Fix事件

package com.walid.testandfix;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Toast.makeText(this, "Fix !!!!!", Toast.LENGTH_LONG).show();
	}

}


patch文件的生成

使用工具:apkpatch-1.0.3 

原理:根据两个apk包,生成一个差异文件,就是所谓的补丁文件即patch文件。

命令 : apkpatch.bat -f new.apk -t old.apk -o output1 -k debug.keystore -p android -a androiddebugkey -e android

-f <new.apk> :新版本
-t <old.apk> : 旧版本
-o <output> : 输出目录
-k <keystore>: 打包所用的keystore
-p <password>: keystore的密码
-a <alias>: keystore 用户别名
-e <alias password>: keystore 用户别名密码

 

执行完命令,就会在输出目录中输出.apatch文件: 
 
xiaobai.apatch:就是patch文件,你可以将这个文件按照版本号推送到前端,前端下载完文件之后重启app,就可以实现热更新了。

.apatch文件根目录内容:

这里写图片描述

 
META_INF文件下内容:

这里写图片描述

 
PATCH.MF文件内容:

这里写图片描述

注:Patch-Classes就是改动过的class.

客户端请求服务器接口(api),服务器根据用户传递的数据分析是否有需要修复的bug。 
如果有bug需要修复,就下载服务器指定的.apatch文件的链接,下载完后及时加载并修复,使用addpatch(path)方法,补丁会立即生效。

在Android Studio使用

dependencies {
    compile 'com.alipay.euler:andfix:0.3.1@aar'
}

代码混淆(ProGuard)

-keep class * extends java.lang.annotation.Annotation
-keepclasseswithmembernames class * {
    native <methods>;
}

至此
       
      AndFix集成完毕,您的app可以进行热更新了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android 在线热修复框架 AndFix 初步

AndFix工作流程关于AndFix的基本使用和使用流程在AndFix官方Github上已经说的比较详细,这里提取一下基本的修复流程,帮助初次使用者快速的使用AndFix,下面是简要流程图。上面的流程...

Android 热修复框架 AndFix (一)

1.什么是AndFix?AndFix是阿里巴巴出的一个专门针对Android的热修复框架 ,那什么是热修复呢?就是不需要重新安装APK而达到修复bugs的目的。看看阿里巴巴官方对AndFix的描述:...

Android 热修复框架 AndFix的使用及demo

本篇文章主要介绍AndFix的基本使用,以实用为主,对于深层次的原在此不做过多解释。             AndFix   全称是Android hot-fix。是阿里开源的一个热补丁框架,允许...

Android 热修复框架AndFix

导论:上篇博客提到增量更新,这篇就要说说hotfix,那么到底什么区别呢?通俗的理解: 1:你软件有新的功能或者升级一下一些更改,但是下载完整的APK又比较大,这时为了省流量才会用到增量更新,这个叫...

Android AndFix热补丁动态修复框架使用教程

简介已经上线的项目发现BUG,紧急修复BUG发布新版本?No,也许你需要AndFix。AndFix 是阿里巴巴开源的 Android 应用热修复工具,帮助 Anroid 开发者修复应用的线上问题。An...

android AndFix热补丁框架(不发版本,修复线上bug)

有空了解下。 =================================================================== AndFix介绍 AndFix,全称是A...

Android AndFix 热修复框架

热修复框架AndFix

Android热修复学习之旅——Andfix框架完全解析

Android热修复学习之旅开篇——热修复概述 Android热修复学习之旅——HotFix完全解析 Android热修复学习之旅——Tinker接入全攻略在之前的博客《Android热修复学习之...

热修复框架AndFix解析

  • 2016-11-10 10:24
  • 5.60MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)