全面掌握Android 组件化,写给开发者的高级 Android 组件化强化实战,再也不用担心项目做不好了

背景 随着项目逐渐扩展,业务功能越来越多,代码量越来越多,开发人员数量也越来越多。此过程中,你是否有过以下烦恼?

项目模块多且复杂,编译一次要5分钟甚至10分钟?太慢不能忍?
改了一行代码 / 只调了一点UI,就要run整个项目,再忍受一次10分钟?
合代码经常发生冲突?很烦?
被人偷偷改了自己模块的代码?很不爽?
做一个需求,发现还要去改动很多别人模块的代码?
别的模块已实现的类似功能,自己要用只能去复制一份代码再改改?
“这个不是我负责的,我不管”,代码责任范围不明确?
只做了一个模块的功能,但改动点很多,所以要完整回归测试?
做了个需求,但不知不觉导致其他模块出现bug?
如果有这些烦恼,说明你的项目需要进行组件化 了。
什么是组件化 组件化是基于模块化的,组件化是建立在模块化思想上的一次演进,一个变种。组件化本来就是模块化的概念,但是组件化的核心是:模块角色的可转换性,可以在打包时是设置为library,开始调试运行是设置成application。
通俗的讲组件化就是基于可重用的目的,将一个大的软件系统按照分离关注点的形式,拆分成多个独立的组件。 组件的出现是为了解决全局工程中有很多重复代码的问题,是为了复用,而且划分力度是相对较小的模块。组件化的另一个目的是为了解耦,把系统拆分成多个组件,分离组件边界和责任,便于独立升级和维护。
组件化开发带来的优点:
  • 业务模块分开,解耦的同时也降低了项目的复杂度,结构非常清晰。
  • 开发调试时不需要对整个项目进行编译,每个模块可独立编译,提高了编译速度。
  • 多人合作时可以只关注自己的业务模块,把某一业务当成单一项目来开发,可以提升开发,测试效率。
  • 可以灵活的对业务模块进行组装和拆分。
  • 避免重复造轮子,节省开发维护成本;
    为什么现在公司很注重组件化这个问题呢?举个例子来说,一个项目需要好几个业务代码,如果某一个业务代码出了问题,则需要在好几个当中去寻找,工程师需要了解各个业务的功能,避免代码的改动而影响其它的业务功能,势必无形中增加了项目维护的成本。如果让他们都相对独立,我们只需要维护好每个组件,需要用到该组件的功能时,一建引用集成就可以了。
近年来,为什么这么多团队要进行组件化实践呢?组件化究竟能给我们的工程、代码带来什么好处?
组件化的好处: 加快编译速度
每个业务功能都是一个单独的工程,可独立编译运行,拆分后代码量较少,编译自然变快。
提高协作效率
解耦使得组件之间彼此互不打扰,组件内部代码相关性极高。团队中每个人有自己的责任组件,不会影响其他组件;降低团队成员熟悉项目的成本,只需熟悉责任组件即可;对测试来说,只需重点测试改动的组件,而不是全盘回归测试。
功能重用
组件类似我们引用的第三方库,只需维护好每个组件,一键引用集成即可。业务组件可上可下,灵活多变;而基础组件,为新业务随时集成提供了基础,减少重复开发和维护工作量。
怎么学呢?
这里给大家分享一份全网最全的《高级 Android 组件化强化实战》手册,手册分为三个大章节,Android 组件化初识,Android 组件化初探 和 架构演化(大厂篇)
第一章 Android 组件化初识
  • 组件化和模块化的区别
  • 组件化和插件化的区别
  • 组件化开发的优势
  • 业务逻辑层
  • 组件化开发要遇到的问题
  • 从组件化实战来解决问题
  • Android 组件化基础
    全面掌握Android 组件化,写给开发者的高级 Android 组件化强化实战,再也不用担心项目做不好了
    文章图片

    第二章 Android组件化初探
  • 组件化演示案例
  • 概述
  • 模块化和组件化
  • 组件化Demo
  • 组件application和library动态切换
  • WanAndroid APP 组件化项目实战(附demo)
  • 简介
  • 版本更新
  • 效果图
  • 主要功能
  • 项目目录结构
  • 主要开源框架
全面掌握Android 组件化,写给开发者的高级 Android 组件化强化实战,再也不用担心项目做不好了
文章图片

第三章 架构演化(大厂篇)
组件化作为 Android 客户端技术的一个重要分支,近年来一直是业界积极探索和实践的方向。每个大厂内部的各个Android 开发团队也在尝试和实践不同的组件化方案,并且在组件化通信框架上也有很多高质量的产出。
从智行 Android 项目看组件化架构实践
  • 组件化调整的原因和目标
  • 组件化架构调整的整体规划
  • 组件化架构调整中遇到的一些问题
  • 组件化架构的实践成果
【全面掌握Android 组件化,写给开发者的高级 Android 组件化强化实战,再也不用担心项目做不好了】得到 App
  • Android彻底组件化demo发布
  • Android彻底组件化—代码和资源隔离
  • 组件化:代码隔离也难不倒组件的按序初始化
全面掌握Android 组件化,写给开发者的高级 Android 组件化强化实战,再也不用担心项目做不好了
文章图片

微信 App
  • 微信Android模块化架构重构实践
  • 微信Android架构历史
  • 为何再次重构微信
  • 重塑模块化
  • 取舍和选择
  • 代码之外,架构之内
蘑菇街 App
  • 实现方式
  • 组件生命周期管理
  • 壳工程
  • 遇到的问题
  • 持续集成
  • 周边设施
    全面掌握Android 组件化,写给开发者的高级 Android 组件化强化实战,再也不用担心项目做不好了
    文章图片

爱奇艺 App
  • 关于组件化
  • 基于Service的IPC通信
  • 组件化跨进程通信的核心诉求
  • Andromeda
  • 架构分析
美团 App
  • 外卖客户端容器化架构的演进
  • 美团外卖容器化架构全景图
  • 外卖跨端容器建设
  • 外卖页面容器建设
  • 外卖容器化架构的衡量指标
  • 外卖容器化架构的监控运维
  • 外卖容器化架构的发布能力
全面掌握Android 组件化,写给开发者的高级 Android 组件化强化实战,再也不用担心项目做不好了
文章图片

携程 App
  • 产品
  • 无线后端服务架构
  • App工程架构
  • Native的插件化和HotFix
    支付宝 App
  • Quinox 简介
  • Bundle 介绍
  • 资源管理
  • 容器化
    全面掌握Android 组件化,写给开发者的高级 Android 组件化强化实战,再也不用担心项目做不好了
    文章图片

    ## 结语:
    这份资料最具价值的就是实战项目部分。
    理论部分教科书上已经足够了,但是实战的分析是很难找到的。阅读这份资料,就是在和大佬对话,相信你的收获一定不少。
    PS:除了学习,这份资料还可以当做一个面试宝典来用,里面有很多大项目的组件化分析,相信你看过后再次面对面试官的时候一定能侃侃而谈。
    最后在这里希望大家工作顺利,没有BUG,不加班。没有工作的朋友,面试顺利,offer不断!!
    由于资料内容过多,文章篇幅有限,需要完整版《高级 Android 组件化强化实战》 点击这里领取哦!

    推荐阅读