插件化实现原理
什么是插件化
插件在广泛意思上来说就是一个用来运行的独立完整功能的应用,其特点是可以被支持动态得可插拔式加载运行,做到功能模块可以动态的添加和卸载。对Android系统来言,就是相当于一个已经安装到手机的Apk(Android系统独立完整功能的应用模块存在形式)内部可以动态安装apk,Apk是由系统完整来安装和卸载,对于手机应用层来说,是个插件,而这里要说的是Android系统应用App内的插件化,用来解决避免每次更新功能都需要用户重新安装卸载app带来的更新慢/没有修复能力的问题。
插件化实现原理
就上文而言,要实现已安装App内的插件化功能(这个App称为宿主),就需要在App内有个插件化框架来动态加载安装插件,能够像系统一样加载解析Apk,能够运行起来;并且需要支持宿主和插件或插件间的通信以满足业务逻辑或开发模块组件化框架需要。那怎么实现这样的插件化框架呢?
插件Apk资源动态加载原理
大致步骤:安装解析静态资源:Res/manifest/dex/so等文件加载到安装目录下中去,并解析对应的信息进行校验安全合法唯一性,以及做版本判断之类的
启动Apk:加载文件到内存,如dex文件加载,res资源加载成Resource对象以及Application对象
启动组件:启动组件的代理类来接受AMS的检查,然后以某种方式同步到插件中的组件
参见Apk资源加载机制