

Android | 用力过猛!为了组件化改造学习十几家大厂的技术博客
source link: http://www.androidchina.net/11325.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

- 组件化是 保持整个 App 可持续地进行高质量开发的基础,近年来也是业界一直在积极探索和实践的方向,在深入理解组件化架构的过程中,将不断考验你的技术深度与广度;
- 实践中我还参考了十几家技术团队的解决方案(例如:美团、有赞、阿里等等),在这个系列里,我将总结我对于组件化的思考和实践。如果能帮上忙,请务必点赞加关注,这真的对我非常重要。
大厂解决方案参考
1 有赞微商城 IOS 端
- 指出了业务模块化的基本演进:“混乱” -> “中介者模式”->“去中心化”
- 梳理了模块间通信需求:UI 页面跳转、动作执行及复杂数据传输、一对多的通知广播;
- 分享了“复杂数据传输”的处理办法:“复制粘贴代码” -> “下沉到common”
2. 有赞微商城 Android 端
- 提出了 5 个调整方向:抽象基础模块、公共服务去中心化、业务模块服务化、抽象基础组件、单/多模块打包
- 介绍了基于 3 个基础组件依赖和 1 个 Gradle 插件的落地方案
3. 蘑菇街 App
- 提到了组件间通信的实现:URL 统跳、协议下沉(需要有一个公共的地方来容纳这些 public protocl)、隐式 Intent
- 提到了组件生命周期管理:监听系统通知、ModuleManager 中手动遍历调用
- 提到了组件版本管理与持续集成经验
4. 得到 App
- 提到了组件生命周期、服务注册的实现
- 提到了公共层定义组件服务、base层定义通用资源
- 提到了 implementation 与 runtimeOnly 的代码 / 资源隔离效果;
- 提到了 JIMU 插件的调试切换、智能配置功能;
- 提到了 2 种调用组件声明周期的方法: javassist 和反射;
- 提到了有序初始化组件的解决方案:StartUp、DAU
5. 携程 App
- 提到了使用数据总线或者 URL 总线实现页面和功能跳转
- 提到了定制 Gradle 插件来定制化打包
6. 支付宝 App
- 介绍了基于 Bundle 和 mPaaS 打包插件的 Quinox 客户端框架,用于解决模块化和动态化两大问题;
- 提到了解决资源 id 重复的解法:改造 aapt,为每个 Bundle 指定不同 packageId;
7. 手淘 App
- 提到了手淘 All In (聚划算、天猫、彩票)方案的隐患:性能、复用、稳定;
- 提到了容器框架 Atlas 的工作原理;
8. 爱奇艺 App
- 提到了使用 Service 进行跨进程组件通信的缺点;
- 介绍了组件化跨进程通信框架 Andromeda 的功能与核心原理;
9. 微信 App
- 提到了微信架构演进:简单分层架构 -> 多进程架构 -> 多子工程并行开发架构;
- 提到了基础工程存在中心化的问题:越来越多的代码/事件很“自然的”被下沉到基础工程;
- 提出了重塑模块化的 3 个目标:改变通信方式、重新设计模块、约束代码边界
- 提出了服务注册的通信方式
- 提出了新颖的接口暴露方法:将文件后缀修改为
.api
(需配合include_with_api 命令) - 设计了模块生命周期:dependency()、configure()、execute()
- 设计了 pins 工程结构,用于约束代码边界
- 提出了组件化的考量问题:动态性、隔离性
10. 美团 App
- 设计了组件消息总线 modular-event
- 设计了组件化路由框架 WMRouter
《Android组件化架构》 —— 苍王 著
有赞技术团队:
《有赞移动应用如何给页面安上“任意门”》 —— qiezi 著
《有赞微商城-Android组件化方案》 —— qiezi 著
《有赞移动 iOS 组件化(模块化)架构设计实践》 —— jackie 著
腾讯技术团队:
《微信Android模块化架构重构实践》 —— carlguo 著
阿里巴巴技术团队:
《你知道支付宝容器化架构是怎么搭建的吗?》 —— 奶盖
《Atlas-手淘组件化框架的前世今生和未来的路》 —— 手淘团队 著
美团技术团队:
《外卖客户端容器化架构的演进》 —— 郭赛 同同 徐宏 著
《Android组件化方案及组件消息总线modular-event实战》 —— 海亮 著
《Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus》 —— 海亮 著
《WMRouter:美团外卖Android开源路由框架》 —— 子健 渊博 云驰 著
《美团猫眼android模块化实战-可能是最详细的模块化实战》 —— happylion_heart 著
爱奇艺技术团队:
《Android组件化跨进程通信框架Andromeda解析》 —— wanderingguy 著
得到技术团队:
《Android彻底组件化demo发布》 —— 格竹子 著
《Android彻底组件化—代码和资源隔离》 —— 格竹子 著
《组件化:代码隔离也难不倒组件的按序初始化》 —— leobert-lan 著
《浅谈Android组件化》 —— 张明庆 著
携程技术团队:
《携程移动App架构优化之旅》 —— 陈浩然 著
蘑菇街技术团队:
《蘑菇街 App 的组件化之路》 —— limboy 著
《蘑菇街 App 的组件化之路·续》 —— limboy 著
《Android 组件化/模块化 的理解!》 —— 前行的乌龟 著
《Android组件化开发思想与实践》 —— popular_linda 著
《关于Android模块化我有一些话不知当讲不当讲》 —— 流水 著
《Android组件化方案》 —— 张华洋 著
《蘑菇街、滴滴、淘宝、微信的组件化架构解析》 —— 刘小杜 著
《Android业务组件化开发实践》 —— kymjs张涛 著
《Android实现模块 api 化》 —— Tyhj 著
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK