android:AndFix热修复实现

简介

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值