一、什么是组件化
二、组件化的实现
三、组件化需要注意的问题
1. 模式切换
如何在app与lib之间切换,同时支持单体调试和整体打包两种模式,
一般采取自定义变量控制,分别控制apply plugin和mainfest.scrfile,如下图:
if (isModuleRun.toBoolean()) {
apply plugin: 'com.android.application'
} else {
apply plugin: 'com.android.library'
}
### 单Module运行需要配置
sourceSets {
main {
if (isModuleRun.toBoolean()) {
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
} else {
manifest.srcFile 'src/main/AndroidManifest.xml'
java {
//全部Module一起编译的时候剔除debug目录
exclude '**/debug/**'
}
}
}
}
2. 资源冲突
约束为主、规范为辅
各module需要指定唯一命名前缀,避免出现重名冲突的情况。
module的 build.gradle 中通过 resourcePrefix “xxx_可以强行检查资源名称前缀
但该配置只能对xml资源起作用,无法检查图片资源
3. 组件通信
各module相互独立,组件之间如何跳转和通信?
跳转: 可以借助阿里开源的ARouter框架:阿里巴巴ARouter基本使用方法
通信:
组件间通信一般有两种方式:基于事件和基于接口协议
基于事件:EventBus、广播等
基于接口协议:在modules下层建立base Module,制定相应的通信协议,上层module分别负责实现和引用
网友评论