背景
随着项目逐渐扩展,业务功能越来越多,代码量越来越多,开发人员数量也越来越多。此过程中,你是否有过以下烦恼?
项目模块多且复杂,编译一次要5分钟甚至10分钟?太慢不能忍?什么是组件化 组件化是基于模块化的,组件化是建立在模块化思想上的一次演进,一个变种。组件化本来就是模块化的概念,但是组件化的核心是:模块角色的可转换性,可以在打包时是设置为library,开始调试运行是设置成application。
改了一行代码 / 只调了一点UI,就要run整个项目,再忍受一次10分钟?
合代码经常发生冲突?很烦?
被人偷偷改了自己模块的代码?很不爽?
做一个需求,发现还要去改动很多别人模块的代码?
别的模块已实现的类似功能,自己要用只能去复制一份代码再改改?
“这个不是我负责的,我不管”,代码责任范围不明确?
只做了一个模块的功能,但改动点很多,所以要完整回归测试?
做了个需求,但不知不觉导致其他模块出现bug?
如果有这些烦恼,说明你的项目需要进行组件化 了。
通俗的讲组件化就是基于可重用的目的,将一个大的软件系统按照分离关注点的形式,拆分成多个独立的组件。 组件的出现是为了解决全局工程中有很多重复代码的问题,是为了复用,而且划分力度是相对较小的模块。组件化的另一个目的是为了解耦,把系统拆分成多个组件,分离组件边界和责任,便于独立升级和维护。组件化开发带来的优点:
- 业务模块分开,解耦的同时也降低了项目的复杂度,结构非常清晰。
- 开发调试时不需要对整个项目进行编译,每个模块可独立编译,提高了编译速度。
- 多人合作时可以只关注自己的业务模块,把某一业务当成单一项目来开发,可以提升开发,测试效率。
- 可以灵活的对业务模块进行组装和拆分。
- 避免重复造轮子,节省开发维护成本;
为什么现在公司很注重组件化这个问题呢?举个例子来说,一个项目需要好几个业务代码,如果某一个业务代码出了问题,则需要在好几个当中去寻找,工程师需要了解各个业务的功能,避免代码的改动而影响其它的业务功能,势必无形中增加了项目维护的成本。如果让他们都相对独立,我们只需要维护好每个组件,需要用到该组件的功能时,一建引用集成就可以了。
组件化的好处: 加快编译速度
每个业务功能都是一个单独的工程,可独立编译运行,拆分后代码量较少,编译自然变快。
提高协作效率
解耦使得组件之间彼此互不打扰,组件内部代码相关性极高。团队中每个人有自己的责任组件,不会影响其他组件;降低团队成员熟悉项目的成本,只需熟悉责任组件即可;对测试来说,只需重点测试改动的组件,而不是全盘回归测试。
功能重用
组件类似我们引用的第三方库,只需维护好每个组件,一键引用集成即可。业务组件可上可下,灵活多变;而基础组件,为新业务随时集成提供了基础,减少重复开发和维护工作量。
怎么学呢?
这里给大家分享一份全网最全的《高级 Android 组件化强化实战》手册,手册分为三个大章节,Android 组件化初识,Android 组件化初探 和 架构演化(大厂篇)第一章 Android 组件化初识
- 组件化和模块化的区别
- 组件化和插件化的区别
- 组件化开发的优势
- 业务逻辑层
- 组件化开发要遇到的问题
- 从组件化实战来解决问题
- Android 组件化基础
文章图片
第二章 Android组件化初探 - 组件化演示案例
- 概述
- 模块化和组件化
- 组件化Demo
- 组件application和library动态切换
- WanAndroid APP 组件化项目实战(附demo)
- 简介
- 版本更新
- 效果图
- 主要功能
- 项目目录结构
- 主要开源框架
文章图片
第三章 架构演化(大厂篇)
组件化作为 Android 客户端技术的一个重要分支,近年来一直是业界积极探索和实践的方向。每个大厂内部的各个Android 开发团队也在尝试和实践不同的组件化方案,并且在组件化通信框架上也有很多高质量的产出。从智行 Android 项目看组件化架构实践
- 组件化调整的原因和目标
- 组件化架构调整的整体规划
- 组件化架构调整中遇到的一些问题
- 组件化架构的实践成果
- Android彻底组件化demo发布
- Android彻底组件化—代码和资源隔离
- 组件化:代码隔离也难不倒组件的按序初始化
文章图片
微信 App
- 微信Android模块化架构重构实践
- 微信Android架构历史
- 为何再次重构微信
- 重塑模块化
- 取舍和选择
- 代码之外,架构之内
- 实现方式
- 组件生命周期管理
- 壳工程
- 遇到的问题
- 持续集成
- 周边设施
文章图片
- 关于组件化
- 基于Service的IPC通信
- 组件化跨进程通信的核心诉求
- Andromeda
- 架构分析
- 外卖客户端容器化架构的演进
- 美团外卖容器化架构全景图
- 外卖跨端容器建设
- 外卖页面容器建设
- 外卖容器化架构的衡量指标
- 外卖容器化架构的监控运维
- 外卖容器化架构的发布能力
文章图片
携程 App
- 产品
- 无线后端服务架构
- App工程架构
- Native的插件化和HotFix
支付宝 App
- Quinox 简介
- Bundle 介绍
- 资源管理
- 容器化
文章图片
## 结语:
这份资料最具价值的就是实战项目部分。
理论部分教科书上已经足够了,但是实战的分析是很难找到的。阅读这份资料,就是在和大佬对话,相信你的收获一定不少。
PS:除了学习,这份资料还可以当做一个面试宝典来用,里面有很多大项目的组件化分析,相信你看过后再次面对面试官的时候一定能侃侃而谈。
最后在这里希望大家工作顺利,没有BUG,不加班。没有工作的朋友,面试顺利,offer不断!!
由于资料内容过多,文章篇幅有限,需要完整版《高级 Android 组件化强化实战》 点击这里领取哦!