最近一直在搞android 热补丁,有一些心得体会,抱着好记性不如烂笔头,把自己的体会写下来。
首先来看一下技术选型,现有可以达到热补丁效果的技术方案有一些,dynamic-load-apk,andfix,dexposed,H5,dex 包动态加载。
1.对于dynamic-load-apk 这是一个非常强大的开源框架:https://github.com/singwhatiwanna/dynamic-load-apk 它的作用我列举一些我要用到的对比项:
1.支持动态发布新功能
2.可以解决65535的限制
3.插件化管理项目更方便 等等
2.andfix,这是阿里新出的一个开源项目,用于动态修复补丁:https://github.com/alibaba/AndFix
1.支持动态修复线上bug
3.dexposed,这是阿里新出的一个开源项目,用于动态修复补丁:https://github.com/alibaba/dexposed,阿里的hotPatch项目 就是基于这个来做的,
1.支持动态修复线上bug
2.支持资源文件的替换
3.支持发布新功能
4.支持动态后台数据采集 等等
4.H5,这个我就不多讲了,他的优势在于开发的成本,不过对于android 来说,他的适配型受到很大的挑战,现有的如果只是做展示效果,可以用它来做,如果需要有很多的交互,这个做起来很麻烦,不过阿里现在研究另外一个项目:https://github.com/alibaba/weex,一旦这个项目成熟的话,app编码方式,将随之改变。
5.dex 包动态加载,这个功能有点类似hotfix,不过两个的实现方式不一样,hotfix 实现的是运行时替换方法,达到修复的功能,而后者 是在dex 的加载时候,用新的class 替换老的class ,已达到修复的功能。
我本人选择的是dexposed,它的功能强大,另外一个阿里正在使用这个框架,相信它会很快的被推广出去。