组件化

随着APP的迭代,组件化成为解决复杂业务和提高开发效率的有效手段。本文详细介绍了组件化与模块化的区别,强调组件化在业务解耦、独立编译等方面的优势,并提供了配置组件化的步骤,包括新建Module、配置gradle.properties、改造清单文件以及在壳app中管理子module依赖等关键操作。

组件化:

为什么组件化?

随着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') 
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值