AndFix热修复框架集成与使用

简介:

AndFix 是阿里出的一个修复在线bug的热修复android库,是Android hot-fix的简称,它支持andorid 2.3到7.0的版本,和 arm,x86架构,也支持dalvik和art虚拟机,32位和64位系统。AndFix的补丁压缩文件格式是 .apatch,通过服务器发送到客户端来修复bug。
Github:https://github.com/alibaba/AndFix

AndFix原理

AndFix 主要是通过查找补丁文件中注解标记的方法,在底层实现方法替换,来达到解决程序bug的目的。

AndFix集成

  1. 添加依赖

    1
    2
    3
    dependencies {
    compile 'com.alipay.euler:andfix:0.5.0@aar'
    }
  2. 初始化补丁管理器,加载补丁,在Application.onCreate()方法里添加下面代码

    1
    2
    3
    patchManager = new PatchManager(this);
    patchManager.init(version);
    patchManager.loadPatch();
  3. 添加补丁

    1
    patchManager.addPatch(path);//path of the patch file that was downloaded

AndFix 补丁生成

  1. 补丁制造工具下载
    https://github.com/alibaba/AndFix/raw/master/tools/apkpatch-1.0.3.zip

  2. 补丁生成命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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.

AndFix 混淆

-keep class extends java.lang.annotation.Annotation
-keepclasseswithmembernames class
{
native ;
}

AndFix 问题

  1. 发现在继承AppCampatActivity的类的onCreate方法中修改会报错
  2. 只能实现在方法级别修改bug,相比Tinker来说,功能相对较弱