前两天技术群里一个小伙伴突然问:

不知道你有没有遇到过,每次过年回家 或 相亲都会遇到这样的段子
亲戚 (或未来丈母娘) : 你现在干啥呢?
我:我是做Android的,换种方式说 ,是做app、做手机应用的,就你手机上这一个个应用就是我 们做的
亲戚 (未来丈母娘) : “那你能不能做个淘宝、微信啊?
面对这种疑问,我们也只能笑一笑,毕竟淘宝是200多人同时开发的结晶。经历10多年的版本迭 代。形成了如今高性能淘宝应用,凭一人之力无法做出完整淘宝项目,当然了,我们也可以仿淘宝做做 UI界面。但做出来的壳子对技术提升来说没有什么意义。
这种疑问也引发我们深刻沉思,作为专业的我们, 是怎么实现手机淘宝的,我们应该有所了解。 用了什么架构 ,接下来我们就一起来揭秘吧!
那我们就一起看看淘宝团队是如何实现200多人一起协作开发的完整大型项目吧!

1.1 手淘项目早期遇到的问题你现在也可能遇到?
手机淘宝Android客户端有几百人开发,十几个团队。如果整个Android客户端是一个工程,那十 几个团队每个人上午上班第一件事情估计就是合代码,运气不好,一天都在合代码,而且只要有一个人 提交的代码编译不过,所有人都会被堵塞在那里,所以单个工程是不可能的事情。
只要是包含了很多业务的客户端,都会面临这个问题,各个业务代码量越来越多,新需求又源源 不断的来,业务团队之间要是有直接依赖,那被依赖最多的团队成员,在改代码的时候都是战战兢兢 的,生怕自己的改动导致其他业务奔溃。
最终交付的时候,总会被一个业务线的人卡住,导致没法及时交付这个版本。而且随着代码量越来 越多,方法数超65535的问题也跟着到来
在手机淘宝2010年的版本 由单体项目转成了组件化项目
1.2 为什么要手淘项目要实现组件化呢?
随着从手淘APP发布第一个版本以来,新功能的不断增加,业务也会变的越来越复杂,从当初5个 人的Android团队发展到现在200人的团队规模。协作起来越来越复杂和麻烦,,每次发布版本时真是头 疼的问题!!!
看你的项目适不适应组件化! 看你有没有遇到以下几种情况
1、实际业务变化非常快,但是单一工程的业务模块耦合度太高,牵一发而动全身;
2、对工程所做的任何修改都必须要编译整个工程;
3、功能测试和系统测试每次都要进行;
4、团队协同开发存在较多的冲突.不得不花费更多的时间去沟通和协调,并且在开发过程中,任 何一位成员没办法专注于自己的功能点,影响开发效率;
5、不能灵活的对业务模块进行配置和组装;
1.3 再来看看手淘项目组件化开发的一些优势:
- 代码解耦变得明显
- 功能重用变得容易
- 团队开发变得简单
- 编译速度变的更快
最关键的是每次发版时,不用等待某一个人提交代码才能提交,可以快速的按照既定时间线提交
1.4 手淘组件化遇到问题,举一个例子(如重复依赖)
重复依赖问题其实在开发中经常会遇到,早期的手淘项目也遇到了,我们来看你手淘项目组怎么解决的呢
比如你 implementation 了一个A,然后在这个库里面又 implementation 了一个B,然后你的工 程中又 implementation 了一个同样的B,就依赖了两次。

可以将所有的依赖写在 module中,手机淘宝在编译过程中会走手淘的编译插件, 所有的依赖统一 交给Groovy适配器来进行,Groovy适配器会筛选出最新版本 交给编译插件。
组件化中还有很多类似需要解决的问题,我们该怎么学习手机淘宝式的组件化呢?
推荐给大家一个讲解组件化的视频:www.bilibili.com/video/BV1BT…
里面讲解的技术点:
1.如何将项目组件化?
2.组件化中的核心路由框架;
3.阿里ARouter框架的分析;
4.编译时技术实现Arouter;
大家感兴趣的可以看一看;
最,最,最后我给大家分享一份从各大网络平台上收录和整理的 Android学习PDF+架构视频+面试文档+源码笔记 ,还有Android开发面试专题资料,高级进阶架构资料供大家学习进阶,希望可以帮助到大家进入大厂、拿到高薪
如果你现在有需要的话,可以简信我【666】获取《Android开发核心知识点笔记》最新版,路过别忘了点个Star
喜欢本文的话,不妨给我点个小赞、评论区留言或者转发支持一下呗~

网友评论