关闭

Android 热修复之AndFix

标签: AndFixandroid热修复在线修复
99人阅读 评论(0) 收藏 举报

最近看了一下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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1095次
    • 积分:41
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:1篇
    • 译文:0篇
    • 评论:3条
    文章存档
    最新评论