Android 插件化实践

附录

插件化对比

Atlas:https://alibaba.github.io/atlas/

VirtualAPK:https://github.com/didi/VirtualAPK/wiki

RePlugin:https://github.com/Qihoo360/RePlugin/wiki

框架 Atlas RePlugin VirtualAPK
定义 Atlas是伴随着手机淘宝的不断发展而衍生出来的一个运行于Android系统上的一个容器化框架,我们也叫动态组件化(Dynamic Bundle)框架。 RePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案。 VirtualAPK是滴滴出行自研的一款优秀的插件化框架。
功能 1.远程bundle2.插件以so形式,放在sdcard,加载后会自动删除。3.热修复,可以不升级apk就实现宿主和组件的更新。 1.远程bundle2.插件以apk形式放在sdcard,加载后还在会自动备份apk到缓存目录。 1.远程bundle2.插件以apk形式放在sdcard,加载后还在,删除会打不开。
更新插件方式 必须要和宿主一起,打差异补丁才能更新。 直接通过下载一个新的插件apk,然后调安装方法就能实现插件的更新。 直接通过下载一个新的插件apk,然后调安装方法就能实现插件的更新。
插件独立性 和宿主的依赖还是挺多,毕竟官方也强调是组件化,不是插件化。 插件不用声明和宿主的联系,所以你生成一个插件后,这个插件可以给其他宿主调用。 插件是一个独立的apk,但插件里面也定义和宿主的关联,就是说这个插件apk并不能给其他宿主用,只能给插件里面声明的那个宿主使用。

总结

  VirtualAPK不支持对宿主进行热修复。如果app需要热更新和插件的功能,推荐使用Atlas;如果插件无法很好地从宿主中拆出来,或者插件的运行和宿主有较多的交互,推荐使用VirtualAPK;如果同一个插件希望其他宿主也能用的话,那就只能RePlugin了,RePlugin就像一个应用市场,宿主仅仅是一个壳,然后把需要的插件下载加载使用就行,更新的话也无需更新宿主,直接更新插件就行。

参考