Android 热修复之AndFix

最近看了一下Android在线热修复的相关资料,发现有几个开源的热修复框架都做的不错,分别是Dexposed、AndFix、ClassLoader,经过大神的分析,最终确定了用AndFix来练练手,大神对三个框架的分析:
http://blog.zhaiyifan.cn/2015/11/20/HotPatchCompare/

首先从github上下载了AndFix的代码,
github地址:https://github.com/alibaba/AndFix
由于该项目是用android stdio做的,而本人对android stdio不熟,搞了一天,都还没把项目运行起来,所以就试着换成熟悉的eclipse来搞,经过一番痛苦的调试,最终还是实现了在线更新的功能。

本文不讨论AndFix原理,只是集成的过程说一下,如果有兴趣的同学,可以看一下别的大神对AndFix的分析:
Android热补丁之AndFix原理解析
AndFix使用说明

AndFix集成步骤

步骤1:先把com/alipay/euler/andfix/下的代码打包成jar文件,然后引用,当然不打包成jar直接引入也是可以的

步骤2:把AndFix/libs下的所有文件复制到libs

步骤3:在application类onCreate里面做初始化

String appversion="";
try {
appversion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;

} catch (NameNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

patchManager = new PatchManager(getApplicationContext());
patchManager.init(appversion);//current version
patchManager.loadPatch();

步骤4:
先打包一个有修复bug前的apk,然后把bug修复,再打包一个修复bug后的apk,这里为了方便显示,修复前的就在textview显示”修复前”,修复后的就显示”修复后”,

private void init() {
        String tag="修复前";
        Log.i(TAG, tag);
        textView1.setText(tag);
    }
private void init() {
        String tag="修复后";
        Log.i(TAG, tag);
        textView1.setText(tag);
    }

步骤5:生成补丁文件

补丁文件需要两个apk来生成,一个是线上有bug的apk,一个是已经修复了bug的apk,通过补丁生成工具apkpatch来生成,进入apkpatch所在目录,执行以下命令,就会生成一个.apatch文件,把这个文件放到手机

./apkpatch.sh -f new.apk -t old.apk -o ./ -k my.keystore -p mykeystore -a mykeystore -e fangchoutest

-a,别名.
-e,keystore别名密码
-f,新apk路径
-k,keystore路径
-n, patch 名字
-o,输出路径
-p,keystore密码
-t,旧apk路径

步骤6:在需要的地方调用布丁,实现热修复

MyApplication.getInstance().getPatchManager().addPatch(path);

代码虽然简单,但是真正要自己慢慢摸索实现,还是费了一些时间,所以把过程分享出来,希望大家能少走弯路

最后把我集成的项目共享出来:

AndFix集成项目

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值