湛蓝之海 发表于 2021-12-25 10:19:27

得到、微信、美团,android混合开发基础恶补篇


[*]别的模块已实现的类似功能,自己要用只能去复制一份代码再改改?
[*]“这个不是我负责的,我不管”,代码责任范围不明确?
[*]只做了一个模块的功能,但改动点很多,所以要完整回归测试?
[*]做了个需求,但不知不觉导致其他模块出现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 项目看组件化架构实践
组件化调整的原因和目标
组件化架构调整的整体规划
组件化架构调整中遇到的一些问题


[*]得到 App
Android彻底组件化demo发布
JIMU使用指南
组件化拆分的感悟
……


[*]微信 App
微信Android模块化架构重构实践
微信Android架构历史
为何再次重构微信
……

最后
总而言之,Android开发行业变化太快,作为技术人员就要保持终生学习的态度,让学习力成为核心竞争力,所谓“活到老学到老”只有不断的学习,不断的提升自己,才能跟紧行业的步伐,才能不被时代所淘汰。
在这里我分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。需要的朋友可以私信我【资料】或者 点这里 免费领取



还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。 领取地址: Android学习PDF+架构视频+最新面试文档+源码笔记


https://blog.51cto.com/u_15465267/4841796
页: [1]
查看完整版本: 得到、微信、美团,android混合开发基础恶补篇