最近在维护项目的过程中,有了一个新的需求,让已经上线的APP增加Bug实时修复的功能。了解了腾讯的Tinker还有阿里的AndFix。最终选择了AndFix。
最近也慢慢养成了一个习惯,在项目里面使用到一门技术,我会先大概的了解一下这门技术的来源和基本原理,这样心里更踏实,加深对这门技术的“感情”。
AndFix简单介绍
AndFix 是阿里巴巴开源的 Android 应用热修复工具,帮助 Anroid 开发者修复应用的线上问题。Andfix 是 “Android hot-fix” 的缩写。支持 Android 2.3 - 6.0,ARM 和 x86 架构,dalvik 运行时和 art 运行时。AndFix 的分支是 .apatch 文件。
AndFix一步一步接入项目
1、下载文件解压后,目录文件清单如下,因为patch文件路径是hardcode在/sdcrad/out.patch,使用时确保放在这个路径。
目录下文件介绍操作说明
/APK/app-release.apk线上使用着的apk(有bug存在)请安装到手机上
/APK/app-release_fix.apk修改bug后签名打包的apk不用安装,生成patch时用到
/apatchtools/apkpatch.sh生成patch工具类使用下面接入步骤的命令即可生成.apatch文件到指定目录
/apatch/out.apatchfixbug后生成的patch文件请放在 /sdcrad/out.patch
sourcecode源码如果要修改apatch指定路径可以修改源码演示
2、开始接入
首先:配置Gradle
compile'com.alipay.euler:andfix:0.5.0@aar'
1) 初始化PathManager
pathManager = new PathManager(context);
pathManager.init(appversion); // current version
2) 加载 patch,一般在Application 的 onCreate()里面加载
pathManager.loadPath();
3) 加载 patch. 下载path完毕后即可加载patch
pathManager.addPath(path)
具体实现代码如下:
1、在Application的OnCreate()方法里面,初始化AndFix:
2、在App的欢迎界面,开始载入AndFix.
3、建议在载入AndFix之后,再给服务端一个数据响应,提示补丁已经加载完成,这样就形成一个完整的热修复的
三、使用生成patch工具类命令
usage: apkpatch
-f
-t
-o
-k
-p <***>
-a
-e <***>
-a,--alias keystore entry alias.
-e,--epassword <***> keystore entry password.
-f,--from new Apk file path.
-k,--keystore keystore path.
-n,--name patch name.
-o,--out output dir.
-p,--kpassword <***> keystore password.
-t,--to old Apk file path.
AndFix热修复命令行
最后一步了,拿到补丁文件,打通整个热修复。
1、这里有你需要的关键性文件,在我的云盘里分享给你:
http://pan.baidu.com/s/1bK4k70 ( 链接需要在下方点击阅读原文进行下载)
2、解压该文件,在文件夹中的命令行下面执行以下命令:
apkpatch.sh -f new.apk -t old.apk -o ./ -k app签名 -p 密码-a App签名的别名 -e 密码
3、把生成的补丁文件放入SD卡内,等重启APP,等APP加载的到补丁文件的时候,热修复的基本流程就完成了!
命令行解析
new.apk 和 old.apk 都是需要经过签名打包的apk , new.apk是bug修复完成的版本,old.apk是有Bug的版本。
更多内容请关注我的个人微信公众号:前端开发技术栈