文档章节

Android 热修复

天使broken
 天使broken
发布于 2016/10/20 10:47
字数 594
阅读 132
收藏 2

众所周知,其实这个东西字2012就已经出现了。当时是携程的团队,遇到了android 的巨坑-65535问题。之后有2个解决方案。一个是Facebook为代表的dex分包方案。一个是微信代表的插件加载的方式。而热修复就是在这2个方案上衍生的。由于热修复的原理都比较多了 我在这里就不说了。在热修复中。我们需要注意的就是对打包这个过程的一个把握,这个是比较重要的。其实原理不难,基本上你掌握了打包就成功了一半了。我是这么觉得的。

  目前市面上的热修复方案:

    1  直接替换类 和资源文件。原理是直接通过反射拿到dex 的pathList 的Elements 的路径 然后进行合并即可,会优先加载没有bug的补丁。这种方案是可以蛮不错的。开源的框架是志刚老师的--NVWA ,DroidFix,RocooFix。 微信的Tinker 今年也是开源了。

   2  .Native hook  该方案首先通过对比修改前后的apk文件得出两个dex文件中同时存在的方法,如果修改过,则利用自定义的Annotation(MethodReplace)标注,最后将这些修改过的方法打包成补丁文件。然后,在将补丁下发到App后,就可以跟据补丁文件中的注解来找到所有需要替换的方法,然后调用native方法去实现方法的替换。著名代表阿里--AndFix.

2中方案各有优势。都是比较成熟的方案。一个是直接粒度在class级别 一个是可以在Method 级别。个人倾向于第一种 ,因为第二种有些时候资源文件不能很好的替换。微信的Tinker效果看来是蛮不错的。

地址:https://github.com/Tencent/tinker   -------Tinker 微信

           https://github.com/bunnyblue/DroidFix#moreinfo -------- DroidFix

           https://github.com/alibaba/AndFix  ---------AndFix 阿里

           https://github.com/dodola/RocooFix       ---------RocooFix  志刚老师的

            https://github.com/dodola/HotFix       -------HotFix   QQ空间

            https://github.com/dodola/AnoleFix   ------AnoleFix 类似美团的Robust  没具体应用

 

 

 

© 著作权归作者所有

天使broken
粉丝 18
博文 35
码字总数 16482
作品 0
徐汇
Android工程师
私信 提问
阿里大牛推荐!业界首部安卓热修复宝典免费下载!

继《阿里巴巴Java开发手册》后,我们为小伙伴们带来了第二份礼物:业界首部全方位完整介绍热修复原理书籍《深入理解Android热修复技术原理》,该书为阿里巴巴手淘技术团队撰写,现已免费开放...

阿里云云栖社区
2017/07/06
0
0
荐书丨深入探索Android热修复技术原理

点击上方“程序人生”,选择“置顶公众号” 第一时间关注程序猿(媛)身边的故事 Android 系统热修复技术之作|移动开发人员人手一本查阅| 详解Sophix 热修复开发实践过程 热修复技术,可以看...

CSDN程序人生
2018/09/01
0
0
热修复框架Robustn 资料汇总

Android中热修复框架Robust原理解析+并将框架代码从"闭源"变成"开源"(http://blog.csdn.net/jiangwei0910410003/article/details/53693017) 2.Android中热修复框架Robust原理解析+并将框架代......

IT追寻者
2017/08/14
0
0
热修复技术的实践之旅——微信TinkerPatch热修复结合Walle多渠道打包的详解

本文导语: 本文的核心内容介绍: (1)对比当前市场上的热修复方案,对Tinker热修复方案进行了简单的介绍。 (2)详细讲解了微信Tinker的完整接入过程,文末提供了一个自己写的非常轻量的D...

懂音乐码虫
2018/05/29
0
0
Tinker 1.8.0 发布,微信开源的 Android 热修复框架

Tinker 1.8.0 版本已发布: 优化补丁后 Android N启动速度 #416 支持Android O 修复RxJava 可能出现的verify error #491 修复部分CA签名校验不过的问题 #555 修复patchversion没有赋值的问题...

王练
2017/08/10
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

spring mvc主流程源码阅读(剖析)

第一步,通过web.xml的配置可以知道,用户访问url第一次先走到DispatchServlet,(默认你学过基本的java的Servlet开发) <servlet><servlet-name>springServlet</servlet-name><serv......

小海bug
15分钟前
0
0
vmstat命令详解

https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

流光韶逝
50分钟前
1
0
如何理解算法时间复杂度的表示

先从O(1) 来说,理论上哈希表就是O(1)。因为哈希表是通过哈希函数来映射的,所以拿到一个关键 字,用哈希函数转换一下,就可以直接从表中取出对应的值。和现存数据有多少毫无关系,故而每次执...

yky20190625
今天
5
0
分布式架构 实现分布式锁的常见方式

一、我们为什么需要分布式锁? 在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制...

太猪-YJ
今天
9
0
GitLab Docker 安装记录

安装环境 环境Centos7.4 64 1.拉取镜像文件 docker pull gitlab/gitlab-ce:latest 2.docker 安装 git.zddts.com 为访问域名或换成可以访问的IP docker run -d --hostname git.***.com -p ......

侠者圣
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部