移动架构 (七) 组件化架构设计思想

文章介绍了项目随着迭代变得复杂后,引入模块化、组件化思想的原因。组件化允许代码按功能拆分成独立模块,提高开发效率和维护性。文中详细讲解了如何实现组件化,包括支持单独调试、代码隔离、组件间交互以及UI跳转,并推荐使用YEventBus和ARouter框架。此外,还提供了源码下载链接和相关系列文章。
摘要由CSDN通过智能技术生成

为什么要组件化?

随着项目不断的迭代 , 代码越来越臃肿 , 人员也越来越多 , 同时在一个 module 中共同开发 , 首先来说维护成本极高 , 不易管理扩展 , 现在就有了模块化的思想 , 把模块之间共用的代码(网络框架, 图片框架, 异步框架, 日志框架, 显示小部件 View 等),不同的功能。抽取成单独的 core module 和多个功能 module 。这样每个人负责自己的 module 开发,便于管理,协同开发。

当 module 越来越多,这又出现了一个问题,编译时间很长,为了解决这个问题,最后把每个 module 做成可配置,支持单独调试,大大的提升了开发效率。

模块化、组件化、插件化

模块化

在项目中根据不同的功能需求,和共用的代码抽取出来,形成单独的 module , 这就是模块化。

组件化

组件化是建立在模块化思想上的一次升级,一个变种。组件化本来就是模块化的概念,只是具有可变性,在线上环境是 module lib , debug 环境是 application 。组件化的单位是 application

插件化

其实插件化也是基于模块化的思想,将一个完整的工程,按业务划分为不同的插件,来化整为零,相互配合。插件化的单位是 apk , 可以实现对 apk 的动态加载,更新,比组件化更灵活。

如何实现组件化

在实现之前我们先来看下最终效果吧

目录结构:

效果:

1. 组件支持单独调试(application , lib 切换)

1.1 项目 build.gradle 配置是否需要单独调试环境

ext {  
    // extend 
    // false: 组件模式
    // true :集成模式
    isModule = false
}

1.2 module 中 build.gralde 配置

//根据isModule标签动态的切换 集成/组件模式
if (isModule){
    apply plugin: 'com.android.library'
}else{
    apply plugin: 'com.android.application'
}
android{
...
defaultConfig {
        //资源配置
        sourceSets{
            main{
                //在组件模式下 使用不同的manifest文件
                if(!isModule){
                    manifest.srcFile 'src/main/module/AndroidManifest.xml'
                    java.srcDirs 'src/main/module/java','src/main/java'
                }else{
                    manifest.srcFile 'src/main/AndroidManifest.xml'
                }
            }
        }
		}
...
}

切换之后就可以单独运行了。

2. 代码隔离

将不同业务代码抽离成单独的 module,然后在宿主 APP 中根据调试环境依赖。

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    if (isModule) {
        //对代码跟资源进行隔离
        runtimeOnly project(path: ':modulea')
        runtimeOnly project(path: ':moduleb')
    }
}

这里如果有人对依赖方式不了解的话,可以看下面这张表

3. 组件之间交互

这里用到了我的轻量级 YEventBus 通信框架,如果想详细了解怎么使用和原理的可以看下我之前写的这篇文章轻量级 EventBus 框架,根据 TAG 发送接收事件

4. UI 跳转

UI 跳转框架这里我没有自己写,用的 alibaba 开源的组件化路由框架 ARouter

总结

到这里我相信大家对组件化已经有了一定的了解, 我们已经把组件化的模型搭建好了,现在可以根据自己的业务需求搭建一套属于自己项目上的组件化框架。

源码下载: YKComponent

系列文章

移动架构 (一) 详解架构设计中UML图的使用

移动架构 (二) Android 中 Handler 架构分析,并实现自己简易版本 Handler 框架

移动架构 (三) AMS 源码分析

移动架构 (四) EventBus源码分析及实现自己的轻量级 EventBus 框架

移动架构 (五) 了解Android数据持久化

移动架构 (六) 轻量级进程间通信框架设计

移动架构 (七) 组件化架构设计思想

移动架构 (八) 动态化加载插件技术模型实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金戈鐡馬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值