android 组件化路由,android 组件化开发美团组件路由原理与实现

组件化

组件化之前

dc92823ed4e52e63449717b1a789ec41.png

所有业集中再一个Module中。随着业务的增加,整个项目结构的复杂度也在不断的增加

业务之间直接相互调用,你中有我,我中有你,代码高度耦合,牵一发而动全身

开发人员需要花费大量的时间与其他业务开发人员沟通与协调,无法专注于自己的功能点,影响开发效率

不能灵活对工程进行配置和组装

组件化之后

组件化是指解耦复杂系统时,将多个功能模块拆分。重组的过程。在Android工程表现上就是把app按照其业务的不同。划分为不同的Module

d59c79518c45fc537e8e8ff5b496656e.png

1 App 壳工程: 负责管理各个业务组件和打包APK,没有具体的业务功能; 就是指的创建项目中的app模块

2 业务组件层:根据不同的业务构成独立的业务组件

3 功能组件层:对上层提供基础功能服务,如登录,日志服务等;

4 基础库       :包含了各种开源库以及和业务无关的各种自研工具等。

上层调用下层

027dcf9febd6b265db38f918d3f1c037.png

7a01c6291c77f526dd6ec401f27eb3da.png

基础库就是引用的第三方,或者是自己创建的工具类

为什么要组件化

1 、各个组件专注自身功能的实现,模块中代码高度聚合,只负责一项任务,也就是常说的单一责任原则;

2、各业务研发可以互不干扰、提升写作效率;

3、业务进行拔插、灵活多变;(通过implementation导入)

4、业务之间将不再直接引用。和依赖。各个模块组件更加独立,降低耦合;(功能之间无法调用 比如图中2的food 与图中2 的main)

5、加快编译速度,提高开发效率(单元测试 或者直接编译功能的apk就可以)

。。。。。。

如何组件化

组件模式和集成模式的转换

1、gradle.properties中定义变量,如:

#true 集成模式运行 false:组件模式运行

isModule=true

2、在业务层中的build.gradle修改为动态导入不同插件,下面以sdk为例:

if(isModule.toBoolean()){

//集成模式 集成进入app

apply plugin:'com.android.library'

}else{

//组件模式 单独运行

apply plugin:'com.android.application'

}

e7bab27e3dca3716b24170a7d9f22a4e.png

3.在导入的时候判断

if (isModule.toBoolean()) {

implementation project(':sdk')

}

4b29519c540966e32f70a9b72aaf40c0.png在sdk这里判断

if (!isModule.toBoolean()) {

applicationId "com.huikeyun.sdk"

}

b90394d70cbca01cd65d9d4a24f4f9de.png

也可以在根目录新建一个config.gradle 写入如下内容

ext{

isModule=false

}

在项目级别的gradle中最上面

apply from: "config.gradle"

然后再根目录的时候

if (rootProject.ext.isModule.toBoolean()()) {

apply plugin: 'com.android.library'

} else {

apply plugin: 'com.android.application'

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值