一,什么是插件化
插件化是将一个应用按照宿主,插件的方式改造就叫插件化
(1)宿主:主app可以用来加载插件也成为Host
(2)插件:插件app,被宿主加载的app,可以跟普通的app一样的apk文件
如图显示的so文件就是通过插件化生成的各个业务线的so文件
二,插件化的作用
解决 由于app体积越来越,功能模块越来越多导致的以下几个问题
(1)方法数超过65535,占用内存过大
(2)耦合度高
(3)协同开发成本高
优势:
(1).业务模块基本完全解耦
(2).高效的并行开发(编译速度更快)
(3).按需加载,内存占用更低
三,概念对比与分析
组件化与插件化
1.组件化是一种编程思想,而插件化是一种技术
2.组件化是为了代码的高度复用性而出现
3.插件化是为了解决应用越来越庞大而出现的
插件化与动态更新
1.都是动态加载的技术的应用
2.动态更新是为了解决线上bug或小功能的更新出现
3.插件化是为了解决应用越来越庞大而出现的
封装设计模式:组件化
动态加载技术:
1.插件化
2.热修复/热更新/动态更新
四,插件化原理与简单实践
运用到的技术:
android ClassLoader加载class文件原理
java的反射原理
android 的资源加载原理
四大组件加载原理
1.Manifest处理
解析:
(1).构建期进行全量的Merge操作
(2).Bundle的依赖单独Merge生成Bundle自己的MergeManifest
(3).解析各个Bundle的MergeManifest,得到整个包的BundleInfoList
关键点:
(1).文件的合并 合并到总的Manifest总文件中
(2).如何修改编译流程完成所有清单文件的合并
2.插件类加载