5大Android hotfix 线上热修复框架比较

hot fix

1.阿里巴巴-淘宝

https://github.com/alibaba/dexposed#

Dexposed不支持Art模式(5.0+),且写补丁有点困难,需要反射写混淆后的代码,粒度太细,要替换的方法多的话,工作量会比较大。

*2.阿里巴巴-支付宝

https://github.com/alibaba/AndFix#

AndFix支持2.3-6.0,但是不清楚是否有一些机型的坑在里面,毕竟jni层不像java曾一样标准,从实现来说,方法类似Dexposed,都是通过jni来替换方法,但是实现上更简洁直接,应用patch不需要重启。但由于从实现上直接跳过了类初始化,设置为初始化完毕,所以像是静态函数、静态成员、构造函数都会出现问题,复杂点的类Class.forname很可能直接就会挂掉。

局限性:
不支持YunOS
无法添加新类和新的字段,不支持布局资源的修改
需要使用加固前的apk制作补丁,但是补丁文件很容易被反编译,也就是修改过的类源码容易泄露。
使用了apk加固时(360加固,百度加固等等),发现在加固前要先apkpatch制作补丁,不能使用加固后的apk制作,否则补丁无法使用,但是在加固前制作的补丁可以很容易的被反编译出源码

与Nuwa相比,AndFix有一下优点:
不需要重启APP即可应用补丁。
安全性更好,Nuwa后面的版本应该也会加上安全方面的内容。
但是也有缺点:
无法添加类和字段

demo例子:AndFix实现动态热修复Demo

===============================================================

3.阿里巴巴(原腾讯QQ空间 )

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

支持2.3-6.0,会对启动速度略微有影响,只能在下一次应用启动时生效,在空间中已经有了较长时间的线上应用,如果可以接受在下次启动才应用补丁,是很好的选择。

4.百度

https://github.com/dodola/HotFix#

该项目是基于QQ空间终端开发团队的技术文章实现的,完成了文章中提到的基本功能。

文章地址:安卓App热补丁动态修复技术介绍

项目部分代码从 dalvik_patch 项目中修改而来,这个项目本来是用来实现multidex的,发现可以用来实现方法替换的效果。

项目包括核心类库,补丁制作库,例子。可以直接运行代码看效果。

文章作者Github: jiqimaogou

类似项目: Nuwa 这个项目补丁自动化那块做的很完整,感兴趣的可以去看

5.大众点评

https://github.com/jasonross/Nuwa#

与HotFix相比实现了中间制作补丁等操作自动化

需要重启APP

=====================================

参考:http://blog.csdn.net/lmj623565791/article/details/49883661

参考:各大热补丁方案分析和比较

参考:http://www.jianshu.com/p/479b8c7ec3e3

你可能感兴趣的:(Android)