您的位置:首页 > 移动开发 > Android开发

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

2017-03-13 19:53 471 查看
转载请注明出处: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的时候会下载这个补丁文件,并立即生效
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 热修复 Andfix