Andfix集成与使用

一、简介

AndFix是阿里开源的热修复方案,是轻量级的。好处是集成简单,跟我们使用其他第三方就多了一步生成apatch文件,就是补丁文件。AndFix能在线修复的bug,能立即生效不需要重启。不过andfix只能修复方法级别的bug,不能新增方法,也不能修改资源和so文件等。与微信开源的tinker相比能做的确实少了点,但是andfix方便,集成简单,学习成本低,看项目需求可以选择到底用那家的方案。andfix地址:https://github.com/alibaba/AndFix

二、集成SDK

添加依赖

compile 'com.alipay.euler:andfix:0.5.0@aar'

三、初始化

1、看官网介绍初始化andfix就几个方法

patchManager = new PatchManager(context);
patchManager.init(appversion);//current version
patchManager.loadPatch();//加载patch文件

上面这几行代码就是初始化

2、

patchManager.addPatch(path);

这个方法就是添加patch文件,就是在哪个需要修复的地方调用这个方法就行。

3、这里对andfix进行各封装,封装成AndFixManager

public class AndFixManager {

    private static AndFixManager mInstance = null;

    private static PatchManager mPatchManager = null;

    public static AndFixManager getInstance() {
        if (mInstance == null) {
            synchronized (AndFixManager.class) {
                if (mInstance == null) {
                    mInstance = new AndFixManager();
                }
            }
        }
        return mInstance;
    }

    //初始化AndFix方法
    public void initPatch(Context context) {
        mPatchManager = new PatchManager(context);
        mPatchManager.init(AppUtils.getVersionName(context));
        mPatchManager.loadPatch();
    }

    //加载我们的patch文件
    public void addPatch(String path) {
        try {
            if (mPatchManager != null) {
                mPatchManager.addPatch(path);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在项目application中初始化

AndFixManager.getInstance().initPatch(this);

四、生成patch文件

去andfix官网下载patch文件生成工具 https://github.com/alibaba/AndFix/raw/master/tools/apkpatch-1.0.3.zip

这里写图片描述
上面图片就是这个工具,apkpatch.bat是Windows系统使用的,apkpatch.sh是Mac系统上的。andfix.jks是自己项目的签名文件copy过来的,
new.apk对应下面的 : -f,--from <loc> new Apk file path.//修改bug后的apk
app-release.apk对应下面的: -t,--to <loc> old Apk file path.//有bug的apk路径
outputs是自己新建的输出文件存放的目录:-o,--out <dir> output dir.//输出文件的路径
create_patch.sh是自己保存的命令,省的每次都重新输。
如Mac下完整的命令:./apkpatch.sh -f new.apk -t app-release.apk -o outputs -k andfix.jks -p 123456 -a andfix -e 123456

usage: 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.//修改bug后的apk
 -k,--keystore <loc>    keystore path.//签名文件路径
 -n,--name <name>       patch name.//生成的patch文件的名字
 -o,--out <dir>         output dir.//输出文件的路径(自己定)
 -p,--kpassword <***>   keystore password.//签名文件的密码
 -t,--to <loc>          old Apk file path.//有bug的apk路径

命令行在按上面输入这个命令就可生成patch文件。
生成的
这里写图片描述
上面的test.apatch文件就是补丁文件,也就是我们要使用的文件.

五、加载补丁

将上面生成的test.apatch文件push到手机或者是copy到手机的一个文件夹中path中,然后就可以调用下面的代码加载补丁了。
AndFixManager.getInstance().addPatch(path); //path是补丁包本地路径。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值