字节高工最新分享Android组件化最佳实践,GitHub标星20k,全是精髓!

Posted 上马定江山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节高工最新分享Android组件化最佳实践,GitHub标星20k,全是精髓!相关的知识,希望对你有一定的参考价值。

一、什么是组件化以及为啥要组件化

在项目的开发过程中,随着开发人员的增多及功能的增加,如果提前没有使用合理的开发架构,那么代码会越来臃肿,功能间代码耦合也会越来越严重,这时候为了保证项目代码的质量,我们就必须进行重构。

比较简单的开发架构是按照功能模块进行拆分,也就是用 android 开发中的 module 这个概念,每个功能都是一个 module,每个功能的代码都在自己所属的 module 中添加。这样的设计在各个功能相互直接比较独立的情况下是比较合理的,但是当多个模块中涉及到相同功能时代码的耦合又会增加。

例如首页模块和直播间模块中都可能涉及到了视频播放的功能,这时候不管将播放控制的代码放到首页还是直播间,开发过程中都会发现,我们想要解决的代码耦合情况又又又又出现了。为了进一步解决这个问题,组件化的开发模式顺势而来。

二、组件化和模块化区别

1.模块:一般是指的业务模块比如【首页模块】等。

2.组件:是指单一的功能组件,如【视频组件】【支付组件】,每一个组件都可以单独moudle开发,并且可以单独抽出来当SDK使用。

由此看来他们之间最明显的区分度就是模块相对于组件粒度更大,一个模块中可以包含多个组件,并且2种方式本质思想是一致的都是为了代码重用和业务解耦。在划分的时候模块化也是业务导向,组件化是功能导向。

下图就是一个非常基础的组件化架构图,图中重上而下分为 应用层、组件层、基础层。

3.基础架构分层解释

基础层:包含一些基础库以及对基础库的一些封装,比如我们常用的图片加载、网络请求、数据库存储操作。

组件层:包含了一些简单的功能组件

应用层:这图中简化了我们的应用,app相当于我们的模块,一个具体的业务模块会按照需求引用不同的功能组件。

注意:最简单的组件架构如图所示,但是这只是最理想状态下的架构,实际开发中组件间肯定需要数据传递、页面跳转等,但是图中显示的各个组件间是相互隔离的,没用相互依赖,如果进行相互依赖和交互,这就违背了组件化开发的原则,所以需要解决这些问题才能进行组件化开发。

如何学习组件化?

网上有很多关于学习组件化开发的文章,组件化原理很简单,但是真正实施起来还是挺困难的,没有相应的实战+源码参考就做好踩坑的准备吧。

最近小编有幸在字节跳动高工手里扒到这份“组件化实战学习手册”,这位大佬主导开发过多个采用组件化架构的APP项目。现在我只想吹爆!这位大佬熬夜半个月,把积累的经验和踩的坑都进行了总结,整理成了长达220页的学习手册,手册中收录了大厂热门的组件化项目实战,从新手到架构师,这份学习手册足以。

第一章 Android组件化初识

  • 组件化和模块化的区别
  • 组件化和插件化的区别
  • 组件化开发的优势
  • 业务逻辑层
  • 组件化开发要遇到的问题
  • 从组件化实战来解决问题
  • Android组件化基础
    ……

第二章 Android组件化初探目录

  • 组件化演示案例
    概述
    模块化和组件化
    组件化Demo
    组件application和library动态切换
    ……
  • WanAndroid APP 组件化项目实战附demo
    版本更新
    效果图
    主要功能
    项目目录结构
    主要开源框架
    ……

第三章 架构演化(大厂篇)

  • 从智行 Android 项目看组件化架构实践
    组件化调整的原因和目标
    组件化架构调整的整体规划
    组件化架构调整中遇到的一些问题

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

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

  • 蘑菇街 App
    蘑菇街 App 的组件化实现方式
    组件生命周期管理
    壳工程
    遇到的问题
    持续集成
    周边设施
    ……

  • 爱奇艺 App
    基于Service的IPC通信
    组件化跨进程通信的核心诉求
    Andromeda
    架构分析
    ……

  • 美团 App
    外卖客户端容器化架构的演进
    美团外卖容器化架构全景图
    外卖跨端容器建设
    外卖页面容器建设
    外卖容器化架构的衡量指标
    外卖容器化架构的监控运维
    外卖容器化架构的发布能力
    ……

  • 美团Android组件化方案及组件消息总线modular-event实战
  • 美团Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus
  • WMRouter:美团外卖Android开源路由框架
  • 美团猫眼android模块化实战-可能是最详细的模块化实战

  • 携程App
  • 支付宝 App

结语

现在组件化真的不是什么新鲜东西了,大公司都用的滚瓜烂熟,龙飞凤舞了,也就是现在部分中型项目和小项目在组件化的路上努力。

所以同志们,组件化没玩过的,不熟悉的赶紧搞起来,说一点,你不会组件化,发布影子工程那么对你来说就是个噩梦。从本质上来讲任何技术进步都是在现实需求的逼迫下抓耳挠腮,耗尽无数头发才想出来的。

所以呢组件化这个东西出来这么久了,页发展了这么久了,用的人越来越多,那肯定是对我们开发大有裨益的,小伙伴们不会,不熟悉抓紧啦,要不面试问你你怎么回答呢!

以上是关于字节高工最新分享Android组件化最佳实践,GitHub标星20k,全是精髓!的主要内容,如果未能解决你的问题,请参考以下文章

字节Java高工面试:java开发具体流程

字节跳动Android开发高工面试:海量Android大厂高频面试题精编解析

字节跳动高工面试:mysql当前时间减一分钟

Android:在 Activity 中声明 View 组件的最佳实践是啥? [关闭]

点我达骑手Weex最佳实践

Android 组件化最佳实践 ARetrofit 原理