组件化的优势
组件化简单的说就是:能任意使用项目中的module来合并一个app.
实际开发中,遇到业务很复杂,且业务线较多时,我们往往会将项目模块化。但是有时候仅仅模块化,依然解决不了更深城的需求,举个栗子来说下:
刚进项目组时,我们开发的项目,主要包含IM、朋友圈和猪行业(养殖、买卖)的一个app.后来业务扩展,我司行业也在变多,有了渔、田、驴、狐狸、蛋、企、柑橘…有些行业公司组织分公司运营,有些行业外包,这时就衍生出一堆app了,如果不考虑组件化,想想都头大…
组件化的步骤
1.创建config.gradle,在项目下的build.gradle中引入
apply from: "config.gradle"
config.gradle简单代码
ext {
//版本统一配置
compileSdkVersion = 27
minSdkVersion = 17
targetSdkVersion = 27
supportVersion = '27.1.1'
//my_view是否为module
myViewIsModule = true
}
2.module中根据参数myViewIsModule 的值,配置为application或者library.注意统一继承baseLib,有共性的库都放在baseLib中引用。
如果module作为application,我们需要额外配置一个清单文件和application。在module的bulid.gradle中区分引用不同的清单文件。这里我们把作为module时,创建的清单文件放在main下的module文件中。
3.不同module之间Activity跳转传参,通过ARouter操作。Android中默认不同module间页面不可跳转,借助阿里的路由框架,可以完成任意跳转。
4.在app的build.gradle 中配置需要集成的module.
if (Boolean.valueOf(rootProject.ext.myViewIsModule)) {
implementation project(':review_my_view')
}
每个module配置一个参数,这样就可以自由打包module了。
组件化的注意事项
1.config.gradle中配置的参数,每次修改后需要同步,方可生效。
2 资源文件的冲突。类名、xml、drawable等名称都不可重复,建议不同module下资源,加上module名作为前缀。
3.baseLib中配置共性的混淆文件,每个module的proguard-rules.pro中配置对应自己的混淆内容,集成打包时会自动合并。
4.权限。baseLib中配置常见的权限,每个module在自己的两个清单文件中,对应配置,不要遗漏。