android 热修复之AndFix

AndFix

全称Android hot-fix,是alibaba的Android热修复框架,支持Android 2.3到6.0的版本,支持arm与X86系统架构,支持Dalvik和ART Runtime。

原理

AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法。

 

使用教程

 

1. 添加依赖和混淆
dependencies { compile 'com.alipay.euler:andfix:0.4.0@aar'}
   混淆:

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

2. 在Application.onCreate()中初始化PatchManager

public class AndFixApplication extends Application {

    public static PatchManager mPatchManager;

    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化patch管理类
        mPatchManager = new PatchManager(this);

        // 初始化patch版本
        mPatchManager.init("1.0");
//        String appVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
//        mPatchManager.init(appVersion);

        // 加载已经添加到PatchManager中的patch
        mPatchManager.loadPatch();

    }
}

3. 找个地方加载补丁


    private static final String APATCH_PATH = "/fix.apatch"; // 补丁文件名
    private void update() {
        String patchFileStr = Environment.getExternalStorageDirectory().getAbsolutePath() + APATCH_PATH;
        try {
            AndFixApplication.mPatchManager.addPatch(patchFileStr);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

     PatchManager的addPatch方法加载新补丁,项目中可以在下载补丁文件之后调用  

6. 使用官方提供的工具apkpatch生成.apatch补丁文件


 


将两个apk文件和该app的签名文件放入到该目录中

加入签名文件和apk.png

使用命令生成.apatch补丁文件,先cmd进入该目录

进人apkpatch目录.png


使用命令生成补丁

生成补丁文件.png


上图所示则表示补丁包生成完成

apkpatch.bat -f andfix_v2.0.apk -t andfix_v1.0.apk -o output -k AndFixKey.jks -p andfix -a andfix -e andfix

apkpatch.bat -f 新apk -t 旧apk -o 输出目录 -k app签名文件 -p 签名文件密码 -a 签名文件别名 -e 别名密码

  • -f <new.apk> :新apk
  • -t <old.apk> : 旧apk
  • -o <output> : 输出目录(补丁文件的存放目录)
  • -k <keystore>: 打包所用的keystore
  • -p <password>: keystore的密码
  • -a <alias>: keystore 用户别名
  • -e <alias password>: keystore 用户别名密码

生成的output文件:

生成的output文件.png

apatch补丁文件.png

将生成的.apatch补丁文件改成代码中写死的fix.apatch

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qxiaokang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值