组件化
组件化:
为什么组件化?
随着APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂,APP业 务模块的数量有可能还会继续增加,而且每个模块的代码也变的越来越多,这样 发展下去单一工程下的APP架构势必会影响开发效率,增加项目的维护成本,每 个工程师都要熟悉如此之多的代码,将很难进行多人协作开发,而且Android项 目在编译代码的时候电脑会非常卡,又因为单一工程下代码耦合严重,每修改一 处代码后都要重新编译打包测试,导致非常耗时,最重要的是这样的代码想要做 单元测试根本无从下手,所以必须要有更灵活的架构代替过去单一的工程架构。
组件化与模块化区别?
模块化 vs 组件化 当你看到这的时候,想必心理一阵恶寒:模块化?组件化?
到底是什么鬼?有啥区别. 有这种感觉才是对的,模块化和组件化本质思想是一样的,都是”大化小”,两者的目的都是为 了重用和解耦,只是叫法不一样.如果非要说区别,那么可以认为模块化粒度更小,更侧重于重 用,而组件化粒度稍大于模块,更侧重于业务解耦.
组件化优缺点
组件化开发的好处是显而易见:系统级的控制力度细化到组件级的控制力度,一个复杂系统的 构建最后就是组件集成的结果.每个组件都有自己独立的版本,可以独立的编译,测试,打包和部 署
产品组件化后能够实现完整意义上的按需求进行产品配置和销售,用户可以选择使用那些组 件,组件之间可以灵活的组建.
配置管理,开发,测试,打包,发布完全控制到组建层面,并带来很多好处.比如一个组件小版本进 行升级,如果对外提供的接口没有发生任何变化,其他组件完全不需要再进行测试. 但是组件化的实施对开发人员和团队管理者提出了更高水平的要求.相对传统方式,在项目的 管理和组织上难度加大,要求开发人员对业务有更深层次上的理解.
组件化的核心是角色的转换。 在打包时, 是library; 在调试时, 是 application。
如何配置组件化?
application属性,可以独立运行的Android程序,也就是我们的APP apply plugin: ‘com.android.application’
library属性,不可以独立运行,一般是Android程序依赖的库文件 apply plugin: ‘com.android.library’
如何组件化
1. 新建多个Module
2. 在gradle.properties文件中设置每个Module是否需要单独编译的变量

isNeedDestinationModule=false
3 每个子module的build.gradle中需要将
apply plugin: 'com.android.application'
换成
if(isNeedHomeModule.toBoolean()){
apply plugin: 'com.android.application'
}else{
apply plugin: 'com.android.library'
}
根据刚才的每个module都有的布尔值变量来设置是application还是library 同理在下面defaultConfig中设置applicationId
defaultConfig {
if(isNeedHomeModule.toBoolean()) {
applicationId "com.example.home"
}
}
4 每个子module中的清单文件也需要改造 清单文件需要分成两份,放在两个不同的文件夹中

其中debug版清单文件就是普通的清单文件,作为module单独编译时使用 而release版本则是module作为library时使用的 其中去掉了
android:name=".homeApplication"
和入口Activity
5清单文件编好后在每个子module的build.gradle中还需要配置如何使用清单文件 在Android中配置
sourceSets {
main {
if (isNeedMineModule.toBoolean()) {
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
} else {
manifest.srcFile 'src/main/release/AndroidManifest.xml'
}
}
}
6各个子module配置好后需要在壳app中配置build.gradle完成对子module的依赖
if (!isNeedHomeModule.toBoolean()) {
implementation project(':home')
}
if (!isNeedhotelModule.toBoolean()) {
implementation project(':hotel')
}
随着APP的迭代,组件化成为解决复杂业务和提高开发效率的有效手段。本文详细介绍了组件化与模块化的区别,强调组件化在业务解耦、独立编译等方面的优势,并提供了配置组件化的步骤,包括新建Module、配置gradle.properties、改造清单文件以及在壳app中管理子module依赖等关键操作。

3533

被折叠的 条评论
为什么被折叠?



