好久没有更新了,今天介绍一个技术-插件化,插件化虽然兼容性问题很多,随着谷歌官方高版本不断修改系统api,导致目前主流的插件化框架可能会存在兼容性问题,但是插件化方案的思想确是值得我们学习的。从插件化中我们不仅可以了解系统启动流程,四大组件启动流程,可以了解AMS,PMS,是一个可以检验对系统原理的了解程度。我们的热修复框架,还有我们的动态换肤都可以从插件化思想中找到熟悉 的套路。话不多说,开始今天的正文。
插件化介绍
插件化=宿主+n个插件,宿主就是指先被安装到手机中的apk,就是平常加载的普通的apk。插件一般就是指经过处理的APK,so和dex等文件,插件可以被宿主进行加载,有的插件也可以作为APK独立运行。
插件化优势:
(1)团队协作方面:插件可以由一个人或者一个小组进行开发,这样各个插件之间以及插件与宿主之间的耦合度会降低,应用之间的接入和维护变的便捷,每个应用团队只需要负责自己的那一部分就可以了,
(2)缩小apk体积:应用以及主Dex的体积会变小,间接地避免了64k的问题,第一次加载到内存中的注意宿主apk,当使用到其他插件时才会加载相应的插件到内存中,这样就减少了内存的占用
(3)动态化
2.Activity插件化方案:接口式,放射式,Hook式。
今天我们介绍接口式的实现方案占位式,又称插桩式。
2.1占位式方案
由于插件是没有安装的,是没有组件的环境,没有Context,是没有办法运行的,但是我们的宿主是可以运行的,是有组件环境,有Context的。
所以我们可以在宿主Apk中提供一个代理Activity(ProxyActivity)来加载插件中的Act