首页 > 程序开发 > 移动开发 > Android >

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

2017-03-14

Android 热修复AndFix的简单使用介绍。AndFix是一个Android App的在线热补丁框架。使用此框架,我们能够在不重复发版的情况下,在线修改App中的Bug。AndFix就是 “Android Hot-Fix”的缩写。

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

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() {
            @Override
            public void onSuccess(ResponseInfo 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 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  :新版本
-t  : 旧版本
-o : 输出目录
-k : 打包所用的keystore
-p : keystore的密码
-a : keystore 用户别名
-e : keystore 用户别名密码

这里写图片描述

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

相关文章
最新文章
热点推荐