ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

得到、微信、美团、爱奇艺APP组件化架构实践

得到、微信、美团、爱奇艺APP组件化架构实践 一、背景随着项目逐渐扩展业务功能越来越多代码量越来越多开发人员数量也越来越多。此过程中你是否有过以下烦恼项目模块多且复杂编译一次要5分钟甚至10分钟太慢不能忍改了一行代码 或只调了一点UI就要run整个项目再忍受一次10分钟合代码经常发生冲突很烦被人偷偷改了自己模块的代码很不爽做一个需求发现还要去改动很多别人模块的代码别的模块已实现的类似功能自己要用只能去复制一份代码再改改“这个不是我负责的我不管”代码责任范围不明确只做了一个模块的功能但改动点很多所以要完整回归测试做了个需求但不知不觉导致其他模块出现bug如果有这些烦恼说明你的项目需要进行 组件化 了。二、组件化介绍 — 优势及架构组件化去除模块间的耦合使得每个业务模块可以独立当做App存在对于其他模块没有直接的依赖关系。此时业务模块就成为了业务组件。而除了业务组件还有抽离出来的业务基础组件是提供给业务组件使用但不是独立的业务例如分享组件、广告组件还有基础组件即单独的基础功能与业务无关例如 图片加载、网络请求等。这些后面会详细说明。组件化带来的好处就显而易见了加快编译速度每个业务功能都是一个单独的工程可独立编译运行拆分后代码量较少编译自然变快。提高协作效率解耦 使得组件之间 彼此互不打扰组件内部代码相关性极高。 团队中每个人有自己的责任组件不会影响其他组件降低团队成员熟悉项目的成本只需熟悉责任组件即可对测试来说只需重点测试改动的组件而不是全盘回归测试。功能重用组件 类似我们引用的第三方库只需维护好每个组件一建引用集成即可。业务组件可上可下灵活多变而基础组件为新业务随时集成提供了基础减少重复开发和维护工作量。下图是我们期望的组件化架构组件依赖关系是上层依赖下层修改频率是上层高于下层。基础组件是通用基础能力修改频率极低作为SDK可共公司所有项目集成使用。common组件作为支撑业务组件、业务基础组件的基础BaseActivity/BaseFragment等基础能力同时依赖所有的基础组件提供多数业务组件需要的基本功能并且统一了基础组件的版本号。所以 业务组件、业务基础组件 所需的基础能力只需要依赖common组件即可获得。业务组件、业务基础组件都依赖common组件。但业务组件之间不存在依赖关系业务基础组件之间不存在依赖关系。而 业务组件 是依赖所需的业务基础组件的例如几乎所有业务组件都会依赖广告组件 来展示Banner广告、弹窗广告等。最上层则是主工程即所谓的“壳工程”主要是集成所有的业务组件、提供Application唯一实现、gradle、manifest配置整合成完备的App。三、组件化开发的问题点我们了解了组件化的概念、优点及架构特点那么要想实施组件化首先要搞清楚 要解决问题点有哪些核心问题是业务组件去耦合。那么存在哪些耦合的情况呢前面有提到过页面跳转、方法调用、事件通知。 而基础组件、业务基础组件不存在耦合的问题所以只需要抽离封装成库即可。 所以针对业务组件有以下问题业务组件如何实现单独运行调试业务组件间 没有依赖如何实现页面的跳转业务组件间 没有依赖如何实现组件间通信/方法调用业务组件间 没有依赖如何获取fragment实例业务组件不能反向依赖壳工程如何获取Application实例、如何获取Application onCreate()回调用于任务初始化最近小编有幸在字节跳动高工手里扒到这份“组件化实战学习手册”这位大佬主导开发过多个采用组件化架构的APP项目。现在我只想吹爆这位大佬熬夜半个月把积累的经验和踩的坑都进行了总结整理成了长达220页的学习手册手册中收录了大厂热门的组件化项目实战从新手到架构师这份学习手册足以。第一章 Android组件化初识组件化和模块化的区别组件化和插件化的区别组件化开发的优势业务逻辑层组件化开发要遇到的问题从组件化实战来解决问题Android组件化基础……第二章 Android组件化初探目录组件化演示案例概述模块化和组件化组件化Demo组件application和library动态切换……WanAndroid APP 组件化项目实战附demo版本更新效果图主要功能项目目录结构主要开源框架……第三章 架构演化大厂篇从智行 Android 项目看组件化架构实践组件化调整的原因和目标组件化架构调整的整体规划组件化架构调整中遇到的一些问题得到 AppAndroid彻底组件化demo发布JIMU使用指南组件化拆分的感悟……微信 App微信Android模块化架构重构实践微信Android架构历史为何再次重构微信……蘑菇街 App蘑菇街 App 的组件化实现方式组件生命周期管理壳工程遇到的问题持续集成周边设施……爱奇艺 App基于Service的IPC通信组件化跨进程通信的核心诉求Andromeda架构分析……美团 App外卖客户端容器化架构的演进美团外卖容器化架构全景图外卖跨端容器建设外卖页面容器建设外卖容器化架构的衡量指标外卖容器化架构的监控运维外卖容器化架构的发布能力……美团Android组件化方案及组件消息总线modular-event实战美团Android消息总线的演进之路用LiveDataBus替代RxBus、EventBusWMRouter美团外卖Android开源路由框架美团猫眼android模块化实战-可能是最详细的模块化实战携程App支付宝 App…由于篇幅限制这里只能展示部分内容朋友们如果需要这份完整版的PDF资料合集微信扫描下方CSDN官方二维码【免费获取】。结语现在组件化真的不是什么新鲜东西了大公司都用的滚瓜烂熟龙飞凤舞了也就是现在部分中型项目和小项目在组件化的路上努力。所以同志们组件化没玩过的不熟悉的赶紧搞起来说一点你不会组件化发布影子工程那么对你来说就是个噩梦。从本质上来讲任何技术进步都是在现实需求的逼迫下抓耳挠腮耗尽无数头发才想出来的。所以呢组件化这个东西出来这么久了页发展了这么久了用的人越来越多那肯定是对我们开发大有裨益的小伙伴们不会不熟悉抓紧啦要不面试问你你怎么回答呢
返回列表