如何维护一个巨大的Android项目呢(阿里大佬分享的高级Android|如何维护一个巨大的Android项目呢?阿里大佬分享的高级Android 组件化实战,你确定不看看)
文章图片
背景
当一个工程越来越大,功能越来越复杂之后,成员越来越多的情况下,如何维护一个巨大的安卓项目呢?此过程中,你是否有过以下烦恼?
项目模块多且复杂,编译一次要5分钟甚至10分钟?太慢不能忍?组件化开发带来的优点:
改了一行代码 / 只调了一点UI,就要run整个项目,再忍受一次10分钟?
合代码经常发生冲突?很烦?
被人偷偷改了自己模块的代码?很不爽?
做一个需求,发现还要去改动很多别人模块的代码?
别的模块已实现的类似功能,自己要用只能去复制一份代码再改改?
“这个不是我负责的,我不管”,代码责任范围不明确?
只做了一个模块的功能,但改动点很多,所以要完整回归测试?
做了个需求,但不知不觉导致其他模块出现bug?
如果有这些烦恼,说明你的项目需要进行组件化 了。
【如何维护一个巨大的Android项目呢(阿里大佬分享的高级Android|如何维护一个巨大的Android项目呢?阿里大佬分享的高级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
- Quinox 简介
- Bundle 介绍
- 资源管理
- 容器化
...
朋友们如果需要这份完整版的《高级Android组件化强化实战》,点击这里查看全部
推荐阅读
- springboot如何通过@Value|springboot如何通过@Value,@ConfigurationProperties获取配置
- 手把手教你写一个SpringMVC框架
- Map-Reduce|Map-Reduce 思想在 ABAP 编程中的一个实际应用案例
- 如何在中后台领域玩转BFF架构
- 华为云CDN如何提高缓存命中率
- wms系统开源_指南要点(赛事如何玩转开源线上马拉松())
- 大数据|对话阿里云(开源与自研如何共处())
- 数字化时代,如何做好用户体验与应用性能管理
- k8s集群Job负载|k8s集群Job负载 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算模式()
- 从零开始,开发一个|从零开始,开发一个 Web Office 套件(11)(支持中文输入法(or 其它使用输入法的语言))