(一)出现背景
-
app的体积越来越大,功能模块越来越多(比如淘宝中集成聚划算,阿里彩票等等~~~)
2.模块耦合度高,协同开发沟通成本极大
3.android中方法数可能超过65535的限制,占用内存过大。
(二)解决方案
基于android的动态加载技术的支持
1.将一个大的apk按照业务分割成多个小的apk
2.每个小的apk即可以独立运行又可以作为插件运行,类似于大数据集群处理,将一个服务器耗时处理放到多个服务器去分块处理。
(三)插件化技术的优势
1.业务模块基本完全解耦
2.高效并行开发(编译速度更快)
3.按需加载,内存占用更低等等
(四)插件化技术相关概念
1.宿主:主App,可以加载插件,也称为Host.需要用户下载安装到手机系统中作为一个容器含有一些基本的内容和类库。
2.插件:插件App,被宿主加载的App,可以是根普通App一样的Apk文件,即每个业务模块独立出来的apk,这些apk不需要安装到手机的系统中,只需要被宿主App加载内部的dex文件和资源文件
3.插件化:将一个应用按照宿主插件的方式改造就叫插件化。其核心在于普通的apk文件的所有代码都运行在这一个apk文件中,而插件化之后的apk各自的代码都运行在各自的插件apk文件中。
(五)插件化apk和普通apk结构体系
插件化apk和普通apk结构体系.png
比较:标注1的部分结构基本完全一样不同点在于lib文件,图中2部分标注的so文件就是插件化的apk文件,只不过是插件化框架将apk文件转化成了so文件而已,为了保证和普通apk的文件相统一但是内部是不一样的结构。
(六)组件化、插件化本质区别
1.组件化是一种编程思想,而插件化是一种技术
2.组件化是为了代码的高度复用性而出现的
3.插件化是为了解决应用越来越庞大而出现的
(七)插件化、动态更新对比
1.都是动态加载技术的应用,使用场景不同。
2.动态更新为了解决线上bug或小功能的更新而出现
3.插件化是为了解决应用越来越庞大而出现的,对原有应用改造比较大,更加复杂。
为了更加理解上图如下:
插件化和组件化对比.png
插件话原理及深入讲解笔记(二)https://www.jianshu.com/p/11c1b4621cfa
网友评论