博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 热修复
阅读量:6257 次
发布时间:2019-06-22

本文共 1058 字,大约阅读时间需要 3 分钟。

  hot3.png

众所周知,其实这个东西字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  没具体应用

 

 

 

转载于:https://my.oschina.net/wuao/blog/761083

你可能感兴趣的文章
Web Service 的工作原理
查看>>
tesseract ocr文字识别Android实例程序和训练工具全部源代码
查看>>
嵌入式操作系统的调试
查看>>
DroidPHP-A PHP Webserver for android
查看>>
iOS用全局宏的概念理解xcode中的设置 preprocessor macros
查看>>
浮沉乱世,一些话对自己说
查看>>
桌面应用框架 OneRing
查看>>
解决Boost.Regex对中文支持不好的问题
查看>>
Error : Weblogic Maven Plugin deployment WebLogic 12c
查看>>
W3C小组宣布:HTML5标准制定完成
查看>>
dispatch_group_async 使用详解
查看>>
3d引擎列表
查看>>
[Ant] Ant之MacroDef—“宏
查看>>
WEB架构师成长之路-架构师都要懂哪些知识 转
查看>>
C#中使用TCP通信
查看>>
Swift入门篇-swift简介
查看>>
05 继承
查看>>
弧度和角度的转换
查看>>
[leetcode]Unique Paths II @ Python
查看>>
nginx源码分析之hash的实现
查看>>