热修复框架AndFix使用

热修复一般用于版本发布之后无需版本更新而实现代码逻辑修复,AndFix作为阿里的Android热修复开源框架具有立即生效 但同时其资源文件不可作为修复对象,官方地址


使用方法非常简单

  1. Initialize PatchManager

patchManager = new PatchManager(context);
patchManager.init(appversion);//current version

  1. Load patch

patchManager.loadPatch();

  1. Add patch

//path of the patch file that was downloaded
patchManager.addPatch(path);

  1. 推荐做法
  override fun onCreate() {
      super.onCreate()
      Log.i("111", "onCreate: ")
      //初始化
      val patchManager = PatchManager(this)
      patchManager.init("1.0");//current version

      //加载
      patchManager.loadPatch()

      //Add Patch
      var pathFile=File(Environment.getExternalStorageDirectory(),"fixbug.apatch")


      if(pathFile.exists()){
          Log.i("111", "onCreate: "+pathFile.absolutePath)
          patchManager.addPatch(pathFile.absolutePath)
      }
  }
} 

AndFix提供了用于产生补丁的工具,如下
在这里插入图片描述
产生补丁示例

apkpatch -f fix.apk -t bug.apk -o out -k dong.keystore -p android -a android -e android

各参数解释如下
在这里插入图片描述
这样就可以实现更新啦,我们去试一下,报了这样一个错误
ZipFile() java.util.zip.ZipException: File too short to be a zip file: 0
bd了一番无果,最终在stack overflow中找到解决办法,其实是权限没开。仔细一想,新建Demo真的把这茬给忘了,加上权限

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

重新打补丁,果然如此,成功实现,此篇文章只是先开个头,后面使用过程中若碰到其它问题,会在这里继续做个总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值