现在普通人一听“宿主”第一想到的就是欧美电影里的恐怖画面,甚至感觉瘆得慌。但是在移动开发领域,我们经常会提及的“宿主”却有完全不一样的意义,那就是支持插件的app主体。
从2012年插件化概念被提出,到2016年的时候,插件化技术百家争鸣,被一线大厂广泛使用,可以说成为了Android高级工程师所必须具备的技能之一,几乎引领了Android技术的进步!
近些年,一线互联网大厂几乎对移动互联网形成了垄断,app的功能越来越多,比如下面这些app(美团、支付宝等):
每个app都集成了许多功能入口,美团上有“美食”、“电影”、“外卖”、“打车”等,其实每个入口都是一个app,只不过被集成到这些入口里了。如果没有插件化技术,美团、淘宝这些app会有多大?几个G都有可能!
这些大型app是如何把第三方app作为插件集成到自己的app里的?
随便一个app就能随意调用其他app吗?
当然不能!
插件化技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件,而支持插件的app 我们一般叫宿主。支持插件化的app可以在运行时加载和运行插件,这样便可以将app中一些功能独立的模块写成独立的插件,一方面减小了安装包的大小,另一方面可以实现app功能的动态扩展。想要实现插件化,主要是解决下面三个问题:
1、插件中代码的加载和与主工程的互相调用
2、插件中资源的加载和与主工程的互相访问
3、四大组件生命周期的管理
插件化技术涉及得非常广泛,其中最核心的就是Android的类加载机制和反射机制。