拥抱组件化开发,手淘项目内部架构分享
不知道你有没有遇到过,每次过年回家 或 相亲都会遇到这样的段子
亲戚 (或未来丈母娘) : 你现在干啥呢?
我:我是做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开发面试专题资料,高级进阶架构资料供大家学习进阶,希望可以帮助到大家进入大厂、拿到高薪
如果你现在有需要的话,可以在点击查看《Android开发核心知识点笔记》最新版,路过别忘了点个Star
喜欢本文的话,不妨给我点个小赞、评论区留言或者转发支持一下呗~
《Android开发核心知识点笔记》
拥抱组件化开发,手淘项目内部架构分享相关推荐
- Vue.js组件化开发实践
Vue.js组件化开发实践 前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了一下的内容.首先会对使用Vue进行开发的一 ...
- VUE.JS 组件化开发实践
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模 ...
- vue组件化开发实践
前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了一下的内容.首先会对使用Vue进行开发的一些前期需要的技术储备进行简单 ...
- Android之组件化开发
转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! ##前言 在以前的项目中都是建一个基础库,项目依赖基础库,主项目中集成了所有的功能 ...
- android组件化开发视频教程,教你打造一个Android组件化开发框架
作者简介 本篇来自 lucky_billy 的投稿,分享了他的开源组件化框架,详细地讲解框架形成的思路,希望对大家有所帮助. lucky_billy 的博客地址: 解读开源框架设计思想 B站学习视频 ...
- 微信小程序 基础3【组件化开发、自定义组件、全栈开发、使用Express】
视频地址: https://www.bilibili.com/video/BV1cW411T7t6 [2018]学做小程序- 清华大学 https://www.bilibili.com/video/ ...
- 【组件化开发】前端进阶篇之如何编写可维护可升级的代码
前言 我还在携程的做业务的时候,每个看似简单的移动页面背后往往会隐藏5个以上的数据请求,其中最过复杂的当属机票与酒店的订单填写业务代码 这里先看看比较"简单"的机票代码: 然后看看 ...
- 360奇舞团钟恒:选用Vue.js进行组件化开发,我们遇到了哪些坑?
责编:陈秋歌,关注前端开发领域,寻求报道或者投稿请发邮件chenqg#csdn.net. 欢迎加入"CSDN前端开发者"微信群,参与热点.难点技术交流.请加群主微信「Rachel_ ...
- React心得之降龙十八掌:第二式-飞龙在天( React组件化开发及相关概念)
引言 (乾卦九五)<彖>曰:"'飞龙在天',大人造也." 学习了上一章,想必我们对于React有了一个初步的认识,了解了什么是React.什么是JSX.模块与组件.组件 ...
最新文章
- [游戏模版15] Win32 飞机射击
- Java计算两点间经纬度距离(两种方式)
- Oracle interview
- 性能提升约7倍!Apache Flink 与 Apache Hive 的集成
- set类型 php,常用php操作redis命令整理(四)SET类型详解
- Excel 使用技巧之 -- 统计、过滤与引用数据
- 中国移动锁定数据业务新战略
- python入门教程(非常详细)-Python入门教程:超详细1小时学会Python
- 理解Python的协程机制-Yield
- linux grub 分辨率,修改grub分辨率
- 博弈论笔记:动态博弈
- html里怎么画斜线表头,excel里斜线表头怎么做
- 音响常见故障如何解决?
- 智能家居十大必备功能 乐享真正智能生活
- 【C语言基础练习】百钱买百鸡问题。母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只?
- MySQL-学习数据库必备的基础知识
- 欧拉-伯努利梁横向振动2
- Ehcache缓存时间设置
- 七种方式实现垂直居中
- 【面经】2019汇顶科技(固件开发)、地平线机器人(嵌入式)面经
热门文章
- 盛志凡:TVOS标准体系建设及产业化推进与广电终端智能化
- 中南大学软件工程修习课程
- 华硕B250M+I5-7500黑苹果EFI引导文件
- 关于“No enclosing instance of type * is accessible. Must qualify the allocation with an enclo……”的总结与思考
- 解决win10开机出现C:\WIndows\system32\config\systemprofile\Desktop不可用 问题
- 函数表达式与命名函数区别
- 精细化边缘安全防护:如何防止CDN域名被恶意刷量?
- kk的房《垃》产预《圾CXXN》测
- 普元软件获一亿战略投资 董事长刘亚东谈三大核心竞争优势
- 煮饭的机器人作文_做饭机器人作文