美文网首页
Tinker 处理patch流程

Tinker 处理patch流程

作者: JustinBetter | 来源:发表于2017-02-10 14:42 被阅读94次

Tinker 处理patch流程

按推荐方式使用编译注解生成Application

1. Application 加载已合成的patch

  • 加载patch 入口从注册的Application的onBaseContextAttached()开始
tinker1.png

loadTinker()方法即是tinker 加载patch的逻辑,之后调用代理ApplicationLike的原有逻辑,方便修改

  • 反射生成TinkerLoader 实例,调用tryLoad()方法
tinker2.png
  • 经过一连串调用链:各种校验,检查dex,根据不同的系统版本,去反射处理dexElements,合并patch数组,设置给pathList。

2. 根据补丁合成完整Patch,以便重启加载

  • 入口,一句代码:
 TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(),
                Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch_signed.apk");
  • 默认调用Tinker的DefaultPatchListener中的onPatchReceived方法(可以自定义),启动一个IntentService——TinkerPatchService
tinker4.png
  • TinkerPatchService处理patch文件,拷贝到私有目录,dexdiff合并dex,patch合并完成等待重启加载
tinker5.png

相关文章

  • Tinker 处理patch流程

    Tinker 处理patch流程 按推荐方式使用编译注解生成Application 1. Application ...

  • tinker 再学习

    待改进点 之前看tinker的时候,重点在看流程,包括打patch以及合成加载的patch,但后续发现知道流程帮助...

  • Tinker热修复集成

    Tinker与Tinker Patch平台介绍 什么是 Tinker? Tinker 是一个开源项目(Github...

  • Mac 开启gralde的调试

    前因 因为要做tinker,在tinker打出patch包之后,根据业务需求要把patch传到阿里的oss上去,所...

  • 细数Tinker接入的那些坑

    替换Application 按照TInker官方文档,接入Tinker Patch需要把原来项目中Applicat...

  • Tinker的测试流程

    项目是用来bugly集成的tinker作为热更工具,在打包patch后测试有点繁琐,容易忘记。因此记录下测试流程以...

  • 热修复框架 - Tinker patch合成流程

    经过TinkerInstaller.install 安装之后,Tinker相关初始化工作也都做好了,万事俱备等待手...

  • bugly热修复集成注意点

    执行patch任务需要使用tinker-surpport下面的任务,不要用tinker下面的任务 基准包和tink...

  • Tinker使用总结

    gradle接入 在项目的build.gradle中,添加tinker-patch-gradle-plugin的依...

  • tinker patch集成实践

    背景 截止17年3月11日,百川Hotfix1.x版本不支持安卓7.0系统(2.0版本跳票了2个月还没音讯),导致...

网友评论

      本文标题:Tinker 处理patch流程

      本文链接:https://www.haomeiwen.com/subject/plbgittx.html