什么是Android组件化,为什么要组件化?_android组件化的作用-程序员宅基地

技术标签: 经验分享  架构  android-studio  android  移动开发  Android  

背景

组件化作为Android客户端技术的一个重要分支,近年来一直是业界积极探索和实践的方向。每个大厂内部的各个Android开发团队也在尝试和实践不同的组件化方案,并且在组件化通信框架上也有很多高质量的产出。本文主要介绍我们的组件化方案,希望对从事Android组件化开发的朋友能有所启发。

为什么要组件化

近年来,为什么这么多团队要进行组件化实践呢?组件化究竟能给我们的工程、代码带来什么好处?我们认为组件化能够带来两个最大的好处:

1.提高组件复用性

可能有些人会觉得,提高复用性很简单,直接把需要复用的代码做成Android Module,打包AAR并上传代码仓库,那么这部分功能就能被方便地引入和使用。但是我们觉得仅仅这样是不够的,上传仓库的AAR库是否方便被复用,需要组件化的规则来约束,这样才能提高复用的便捷性。

2.降低组件间的耦合

我们需要通过组件化的规则把代码拆分成不同的模块,模块要做到高内聚、低耦合。模块间也不能直接调用,这需要组件化通信框架的支持。降低了组件间的耦合性可以带来两点直接的好处:

1.代码更便于维护
2.降低了模块的Bug率

怎样实现组件化

要实现组件化需要考虑的问题主要包括下面几个:

  • 代码解耦。将一个庞大的工程拆分解耦,这是非常耗时耗力的工作,但这也是最基础最重要的一步
  • 数据传递。每个组件都有可能提供给其他组件使用,主项目与组件、组件与组件之间的数据传递
  • UI跳转。
  • 组件的生命周期。组件加载、卸载和降维的生命周期
  • 集成调试。在开发阶段如何做到按需的编译组件?一次调试中可能只有一两个组件参与集成,这样编译的时间就会大大降低,提高开发效率。
  • 代码隔离。如何杜绝耦合的产生。

下面给大家介绍的是全网最全的高级Android组件化强化实战手册,覆盖了整个互联网公司,受篇幅限制不会展示所有内容,只能截图展示部分,完整内容已整理成PDF文档。 如果有需要《高级Android组件化强化实战》手册可以私信回复我 666 即可

第一章 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架构优化之旅
  • ……

支付宝 App

  • Quinox 简介
  • Bundle 介绍
  • 资源管理
  • 容器化
  • ……

Atlas-手淘组件化框架

  • Atlas是什么
  • 组件化的诞生
  • 解耦和依赖
  • 性能的演进
  • ……

有赞微商城

  • 组件化改造概述
  • 实现方案
  • 实际应用案例
  • ……

总结

组件化后让代码结构非常清晰,分层结构以及之间的交互很明了,团队中的任何一个人都可以很轻松的绘制出代码结构图,这个在之前是没法做到的,并且每个组件的编译时间从 10 分钟降到了几十秒,工作效率有了很大地提升,最关键的还是解耦之后,每次开发需求的时候,面对的代码越来越少,不用背负那么重的代码包袱,可以说达到了“代码越写越少”的理想情况。

如果你是一位Android开发者学好组件化是非常有必要的,而深入理解组件化的实战更是重中之重。如果有需要《高级Android组件化强化实战》手册可以私信回复我 666 即可

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_61845324/article/details/125261986

智能推荐

android 陀螺仪简单使用,判读手机是否静止状态_安卓陀螺仪多少才算静止-程序员宅基地

文章浏览阅读6.5k次,点赞5次,收藏13次。陀螺仪允许您在任何给定时刻确定Android设备的角速度。简单来说,它告诉您设备绕X,Y和Z轴旋转的速度有多快。最近,即使是预算手机正在制造,陀螺仪内置,增强现实和虚拟现实应用程序变得如此受欢迎。通过使用陀螺仪,您可以开发可以响应设备方向的微小更改的应用程序。创建陀螺仪对象和管理器manager// Register it, specifying the polling interv..._安卓陀螺仪多少才算静止

lib静态库逆向分析_libtersafe-程序员宅基地

文章浏览阅读4.7k次,点赞3次,收藏16次。当我们要分析一个lib库里的代码时,首先需要判断这是一个静态库还是一个导入库。库类型判断lib文件其实是一个压缩文件。我们可以直接使用7z打开lib文件,以查看里面的内容。如果里面的内容是obj文件,表明是静态库。如果里面的内容是dll文件,表明是导入库。导入库里面是不包含代码的,代码包含在对应的dll文件中。从lib中提取obj静态库是一个或者多个obj文件的打包,这里有两个方法从中提取obj:Microsoft 库管理器 7z解压Microsoft 库管理器(li_libtersafe

Linux的网络适配器_linux 查询网络适配器-程序员宅基地

文章浏览阅读5.3k次,点赞3次,收藏3次。了解一下,省的脑壳痛 桥接模式对应的虚拟网络名称“VMnet0” 桥接模式下,虚拟机通过主机的网卡进行通信,若物理主机有多块网卡(有线的和无线网卡),应选择桥结哪块物理网卡桥接模式下,虚拟机和物理主机同等地位,可以通过物理主机的网卡访问外网(局域网),一个局域网的其他计算机可以访问虚拟机。为虚拟机设置一个与物理网卡在同个网段的IP,则虚拟机就可以与物理主机以及局域..._linux 查询网络适配器

【1+X Web前端等级考证 】 | Web前端开发中级理论 (附答案)_1+xweb前端开发中级-程序员宅基地

文章浏览阅读3.4w次,点赞77次,收藏438次。# 前言2020 12月 1+X Web 前端开发中级 模拟题大致就更这么多,我的重心不在这里,就不花太多时间在这里面了。但是,说说1+X Web前端开发等级考证这个证书,总有人跑到网上问:这个证书有没有用? 这个证书含金量高不高?# 关于考不考因为这个是工信部从2019年才开始实施试点的,目前还在各大院校试点中,就目前情况来看,知名度并不是很高,有没有用现在无法一锤定音,看它以后办的怎么样把,软考以前也是慢慢地才知名起来。能考就考吧,据所知,大部分学校报考,基本不用交什么报考费(小部分学校,个别除._1+xweb前端开发中级

Linux安装mysql8.0(官方教程!)-程序员宅基地

文章浏览阅读2.5w次,点赞46次,收藏345次。Linux安装mysql(官方教程!)_linux安装mysql8.0

win10微软账号登陆报错:0x80190001解决方案_微软账户登录0x8019001-程序员宅基地

文章浏览阅读3.5w次,点赞19次,收藏18次。win10微软账号登陆报错:0x80190001解决方案_微软账户登录0x8019001

随便推点

【AI之路】使用huggingface_hub优雅解决huggingface大模型下载问题-程序员宅基地

文章浏览阅读1.2w次,点赞28次,收藏61次。Hugging face 资源很不错,可是国内下载速度很慢,动则GB的大模型,下载很容易超时,经常下载不成功。很是影响玩AI的信心。经过多次测试,终于搞定了下载,即使超时也可以继续下载。真正实现下载无忧!究竟如何实现?且看本文分解。_huggingface_hub

mysql数据库查看编码,mysql数据库修改编码_查看数据库编码-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏7次。其中 `DEFAULT CHARSET` 和 `COLLATE` 分别指定了表的默认编码和排序规则。其中 `DEFAULT CHARACTER SET` 指定了数据库的默认编码。其中 `Collation` 列指定了字段的排序规则,这也是字段的默认编码。此命令将更改表的默认编码和排序规则。此命令将更改字段的编码和排序规则。此命令将更改数据库的默认编码。_查看数据库编码

机器学习(十八):Bagging和随机森林_bagging数据集-程序员宅基地

文章浏览阅读1.3k次,点赞7次,收藏24次。本文深入探讨了集成学习及其在随机森林中的应用。对集成学习的基本概念、优势以及为何它有效做了阐述。随机森林,作为一个集成学习方法,与Bagging有紧密联系,其核心思想和实现过程均在文中进行了说明。还详细展示了如何在Sklearn中利用随机森林进行建模,并对其关键参数进行了解读,希望能帮助大家更有效地运用随机森林进行数据建模。_bagging数据集

MFC 自定义消息(类向对话框类传递自定义消息)-程序员宅基地

文章浏览阅读383次。创建的对话框类为 CMFCTEST2Dlg在 MFCTEST2Dlg.h : 头文件 定义#define WM_MYMESSAGE (WM_USER + 100) //step 1....// 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPA..._自定义消息发送到企业微信对话框怎么实现

Openstack 控制台开发体会_openstack console开发-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏2次。这段时间进行openstack控制台界面的开发有2个多月,感觉学到了不少东西。1、前端 首先是前端的技术,之前只知道简单的html语法,对CSS,JS,JQUERY等一窍不通。年后,小组开发人手不是很够,果断转行去开发,记得刚开始,搞个练手的界面,搞了两天才实现。而且前提是别人写好的结构,拿过来修改使用。熟读唐诗三百首,不会做诗也会吟的境界。但是一旦碰到没有样例的界面,那就头疼了_openstack console开发

电流检测电路_ina180-程序员宅基地

文章浏览阅读4k次,点赞4次,收藏26次。INA180电流检测电路_ina180

推荐文章

热门文章

相关标签