Android 热修复AndFix的简单使用介绍

转载请注明出处:http://blog.csdn.net/darling_R/article/details/61925743

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

1,在build.gradle文件添加依赖

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

2。在application中做一些初始化操作

public class BaseApplication extends Application {
    public PatchManager mPatchManager;

    @Override
    public void onCreate() {
        super.onCreate();
        initPatch();
        downPatch();
    }

    private void initPatch() {
        // 初始化patch管理类
        mPatchManager = new PatchManager(this);
        // 初始化patch版本
        mPatchManager.init("1.0");
        // 加载已经添加到PatchManager中的patch
        mPatchManager.loadPatch();
        //删除所有已加载的patch文件
        mPatchManager.removeAllPatch();
    }

    /**
     * 下载补丁文件
     */
    private void downPatch() {
        String target = Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch.apatch";
        Log.e("monkey", "target--> " + target);
        HttpUtils httpUtils = new HttpUtils();//为了简便使用了xUtils下载文件
        String url = "http://xxx/patch.apatch";//下载地址
        httpUtils.download(url, target, false, true, new RequestCallBack<File>() {
            @Override
            public void onSuccess(ResponseInfo<File> responseInfo) {
                String path = responseInfo.result.getAbsolutePath();
                Log.e("monkey", "下载成功--> " + path);
                try {
                    //添加patch,只需指定patch的路径即可,补丁会立即生效
                    mPatchManager.addPatch(path);
                    initData();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(HttpException e, String s) {
                Log.e("monkey", "下载失败-->");
            }
        });
    }

    private void initData() {
        List<String> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i + "");
        }
        Toast.makeText(BaseApplication.this, list.get(list.size()), Toast.LENGTH_SHORT).show();//故意写成数组越界bug
    }

3。将项目(此时是有bug的)打包,命名为oldapk;
4。修改项目bug
5。将修改后的项目打包,命名为newapk;
6。下载官方提供的工具apkpatch
7,执行命令行

命令 : 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 用户别名密码

这里写图片描述

8。会在-o后面的路径中生成指定的文件夹,将里面的xxx.apatch文件放到服务器上修改名称为patch.apatch,这样用户在用使用old.apk的时候会下载这个补丁文件,并立即生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值