文章目录
- 一 VirtualAPK的初始化流程
- 二 VirtualAPK的的加载流程
- 三 VirtualAPK启动组件的流程
- 3.1 Activity
- 3.2 Service
- 3.3 Broadcast Receiver
- 3.4 Content Provider
更多Android开源框架源码分析文章请参见Android open framwork analysis。
从2012年开始,插件化技术得到了很大的发展,究其原因,主要是因为随着业务的增长,主工程变得越来越难以维护,而且随着公司业务的扩展,原来的主应用也逐渐分化了多个子应用,研发团队也由一个变成多个,但是子应用仍然需要主应用的流量入口优势,种种业务场景的需求,极大地促进了插件化技术的发展。
就目前而言,主流的插件化框架有以下几种:
从上图对比可以看出,有着不错的表现的重点是360的DroidPlugin框架和滴滴的VirtualAPK框架,这两家公司的业务类型不同,导致了这两套框架的侧重点也有所不同,具体说来:
- DroidPlugin:DroidPlugin侧重于加载第三方独立插件,例如微信,并且插件不能访问宿主的代码和资源。这也比较符合260应用市场的业务特点。
- VirtualAPK:VirtualAPK侧重于加载业务模块,业务模块通常和宿主都有一定的耦合关系,例如需要访问宿主提供的订单、账号等数据信息等,这也比较符合滴滴业务型的业务特点。
也就是说如果我们需要去加载一个内部业务模块,并且这个业务模块很难从主工程中完全解耦,那么我们会优先选择VirtualAPK这种方案。
A powerful and lightweight plugin framework for Android
官方网站:https://github.com/didi/VirtualAPK
源码版本:0.9.1
按照国际惯例,在分析VirtualAPK的源码实现之前,先吹一波它的优点