第一部分:区别
组件化开发:将一个app分成多个模块,可以对每个模块进行独立调试,打包时最终发布将所有的组件统一合并成一个apk。
插件化开发:将整个app拆分成多个模块,每个模块都是一个独立的apk(组件化每个模块是个libraily),最终打包的时候将宿主apk和插件apk分开或者联合打包。
第二部分:组件化相关知识
工程组件分两种:lib组件和application组件(通过在gradle设置 app plugin:"XXX")
appliction组件:本身可以打包和独立运行
library组件:隶属于app的一部分,可供其他组件使用,但不是可以独立运行和打包
该工程模式的开发思想:
1)新建一个lib组件,new Module -> android library,取名为CommonUtilLib,将所有的公共工具类,网络等放入其中
2)新建一个lib组件,CommonResLib,将我们的公共资源,drawable,String,等放入其中
3)将app按照需求开始划分成多个模块
4)逐一开发模块,例如BuyCar模块,新建一个BuyCarApp组件,BuyCarApp组件可以引用基础组件(CommonUtilLib和CommonResLib),在BuyCarApp组件(是独立的app)添加BuyCarLib组件,在BuyCarLib中的activity中写业务逻辑。
备注:以上就是一个主工程多子工程的开发思想
优点:
1)每个模块可以独立开发和编译运行
2)开发单个模块时可以共享资源和工具类
3)可对独立模块进行测试
第三部分:插件化相关知识
什么是插件化?
有了组件化后为什么还要有插件化呢?插件化可以有多个apk(组件化,无论是主程序多子程序框架,但是当打包的时候,还是一个apk)
插件化的优点?
1)宿主和插件分开编译
2)并发开发
3)动态更新插件
4)按需要下载模块
5)可以写更多的方法
当前的开发的情况:
当前开放出来的插件化框架比较多,他们都有自己的优缺点:
- Qihoo360/DroidPlugin
- CtripMobile/DynamicAPK
- mmin18/AndroidDynamicLoader
- singwhatiwanna/dynamic-load-apk
- houkx/android-pluginmgr
- bunnyblue/ACDD
- wequick/Small