简介:
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集成
添加依赖
123dependencies {compile 'com.alipay.euler:andfix:0.5.0@aar'}初始化补丁管理器,加载补丁,在Application.onCreate()方法里添加下面代码
123patchManager = new PatchManager(this);patchManager.init(version);patchManager.loadPatch();添加补丁
1patchManager.addPatch(path);//path of the patch file that was downloaded
AndFix 补丁生成
补丁制造工具下载
https://github.com/alibaba/AndFix/raw/master/tools/apkpatch-1.0.3.zip补丁生成命令
123456789usage: 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 问题
- 发现在继承AppCampatActivity的类的onCreate方法中修改会报错
- 只能实现在方法级别修改bug,相比Tinker来说,功能相对较弱