android:AndFix热修复实现

来源:互联网 发布:关键词价格查询源码 编辑:程序博客网 时间:2024/05/18 02:06

简介

1、AndFix是一个Android App的在线热补丁框架。使用此框架,我们能够在不重复发版的情况下,在线修改App中的Bug。AndFix就是 “Android Hot-Fix”的缩写。
2、就目前来说,AndFix支持Android 2.3到6.0版本,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime。
3、AndFix 的补丁文件是以 .apatch 结尾的文件。

Demo

需要下载服务端的补丁,可参考该demo

可参考这篇文章实现本地sd卡中模拟热更新,以下可通过该demo实现

推荐篇文章,我觉得写得很详细,链接

实现

1、配置gradle,使用AndFix

    compile 'com.alipay.euler:andfix:0.3.1@aar'`

2、在proguard-rules.pro中设置混淆文件

-keep class * extends java.lang.annotation.Annotation-keepclasseswithmembernames class * {    native <methods>;}

3、添加so包(之前没加报错了。。。这步待定,其他人没说要加。。。)
4、添加权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.INTERNET" />

5、代码编写,打包
编写的代码:这个随便啦,可以在MainActivity里弄两个显示不一样的Toast,就ok了,如

private void toast(){    Toast.makeText(this, "this is new apk", Toast.LENGTH_SHORT).show();}

这里涉及到两个概念:
- 宿主apk——已经发布在应用市场上,有bug并且需要修复的apk;
- 补丁apk——在本地开发的,修复了bug的apk;

我们使用apkpatch,原理是用Java的自定义注解来判断一个方法是否应该被替换,如果有更改,会生成补丁。

6、生成补丁
通过cmd进入控制台,进入apkpatch目录
这里写图片描述

用apkpatch的命令生成补丁,方法如下

usage: apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <***> -a <alias> -e <***> -a,--alias <alias>     keystore entry alias. 给出keyStrore的alias -e,--epassword <***>   keystore entry password. 输出KeyStore的密码 -f,--from <loc>        new Apk file path. 补丁apk -k,--keystore <loc>    keystore path. 给出keyStore的路径 -n,--name <name>       patch name. 补丁名,可以不指定 -o,--out <dir>         output dir. 生成的补丁放入的路径 -p,--kpassword <***>   keystore password. -t,--to <loc>          old Apk file path.给出宿主apk

这里写图片描述

然后到生成补丁的目录中,找到生成的patch文件,重命名patch文件
这里写图片描述

7、模拟实现热修复
先在手机上安装宿主apk,打开,此时实现的还是旧的方法。
关闭手机上的该应用进程
然后再sd卡的指定目录中放入生成的patch。
打开app,实现热更新

0 0