AndFix 实战以及遇到的坑

最近项目中有用到了热加载技术阿里巴巴的AndFix框架,为此做了一下相关的调研。首先Fork了一份github上AndFix源码,发现github上AndFix 上并没有直接可以跑起来的demo。那么只能用自己动手来一步一步来集成喽。具体的步骤就直接来参考github上AndFix文档的步骤了,还是比较详细的。

1、首先第一步我们来加入依赖

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

2、如何来使用呢?

注:这里为了方便测试,我们就是直接初始化PatchManager、加载与添加Patch都放在了自定义Application onCreate方法当中了,主要是3个步骤见注释。

        //1)初始化PatchManager
        mPatchManager = new PatchManager(this);
        mPatchManager.init(AppInfoUtils.getVersionCode(this));
        //2)load patch
        mPatchManager.loadPatch();
        try {
        // .apatch file path ,这里一定要注意每台手机sd卡路径不同
        String patchFileString = "sdcard" + Environment.getExternalStorageDirectory()
                .getAbsolutePath() + APATCH_PATH;
        //3)添加patch
        mPatchManager.addPatch(patchFileString);
        Log.d(TAG, "apatch:" + patchFileString + " added.");
    } catch (IOException e) {
        Log.e(TAG, "", e);
    }

3、生成patch

1)下载生成工具
AndFix提供了一个生成patch的工具叫apkpatch,可以点击进行下载。
2)准备工作
准备两个apk包,一个是带有bug的包, 一个是bug被修复之后的包。具体的action 就是,我首先打一个apk包命名为“app-debug.apk”,注意要有签名的。然后把它安装到手机,此时手机上的包为带有bug的安装包。然后修改一个Log 内容,再进行打包为apk-release.apk,此时准备工作完成,开始第三步如下。
3)生成patch文件
具体命令如下

usage: apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <***> -a <alias> -e <***>
 -a,--alias <alias>     keystore entry alias.
 -e,--epassword <***>   keystore entry password.
 -f,--from <loc>        new Apk file path.
 -k,--keystore <loc>    keystore path.
 -n,--name <name>       patch name.
 -o,--out <dir>         output dir.
 -p,--kpassword <***>   keystore password.
 -t,--to <loc>          old Apk file path.

输入命令 :

 ./apkpatch.sh -o ~/Desktop/ -k ~/develop/github/FamilyLibraryManager/sign.jks -p 123456 -a family_library_manager_key -e 123456  -t ~/Desktop/app-release-01.apk -f ~/Desktop/app-release-01-modifyed.apk

这时在我的桌面生成了app-release-013cb261226d5a99621b9a464b98ab96ac.apatch 文件和diff.dex两个文件。diff.dex 暂时不用管它。我们直接把app-release-01-3cb261226d5a99621b9a464b98ab96ac.apatch 文件重命名为我们Application中用到的APATCH_PATH常量名称。并把它push 到sd卡中制定的目录中。这里我的push命令是

adb push ~/Desktop/out2.apatch  sdcard/storage/emulated/0/out2.apatchc

4、重新运行app查看结果

此时app运行结果应该就是我们修改后的样子了。

最后说一下我碰到的一些坑
1) sdcard 目录, 这里需要注意 sdcard 目录一定要正确,这样才能保证正确的push patch文件以及load patch 文件。
2)生成工具参数不要弄错了 -t -f 的含义,t是旧文件 f是新文件。不然会报java.lang.IllegalAccessError 错误哦。

下班啦~~ 回家,后续会对AndFix原理进行研究~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容