架构就像是一场进化史,根据不同时期的需求,演变出不同的架构,车轮滚滚,到今天,移动端框架百花齐放,让人目不暇接。但是其中的本质是磨灭不了的,换言之根本没有磨灭而是隐藏到了人们所看不到的地方,但是依旧发挥着不可或缺的作用。

为什么需要架构?

  • 一个Activity走天下,包含各种模块和功能
  • 臃肿类太多
  • 不同功能,不同层次拎不清楚,混合在一起
  • 重复代码太多,复用性为差
  • 无法协作开发,
  • 耦合严重,bug太多
  • 等等

当我们新进一个公司,接受别人的项目的时候,基本都会说句MMP,SHI一样的代码啊,啥玩意啊,搞得什么啊。

我擦,我就改了一个参数,怎么全乱套了,一个功能怎么天上地下都需要改啊。

没有经受过痛苦的人,是不会想了解架构的,只有痛苦过的人,才会急切的了解架构。

大厂热门架构演进之路

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,网上碎片化的文章让人摸不着头脑。

特此分享这份字节跳动前技术总监汇聚了上百篇业界知名架构文章整理的而成的《Android架构设计权威指南》,帮助大家在以简驭繁的代码中,对架构乃至标准化开发模式 形成正确、深入的理解!

指南主要介绍Android框架的初始化过程及主要组件的工作原理。分析Android框架的主要源代码,理解框架工作原理所需的各种基础知识和构成实际Android平台骨干的服务框架,,下面是详细内容:

第一章 Android Jetpack实战和教程

1.Android Jetpack - Navigation

2.Android Jetpack - Data Binding

3.Android Jetpack - ViewModel & LiveData

4.Android Jetpack - Room

5.Android Jetpack - Paging

6.Android Jetpack - WorkManger

7.Android Jetpack - Paging 3

第二章. MVC/MVP/MVVM

1.MVC框架-导言

2.MVC框架-ASP.NET窗体

3.MVC框架-第一应用程序

4.MVC框架-文件夹

5.MVC框架-模型

6.MVC框架-控制器

7.MVC框架-视图

8.MVC框架-布局

9.MVC框架-路由引擎

10.MVC框架-动作过滤器

11.MVC框架-高级示例

12.MVC框架-Ajax支持

13.MVC框架-捆绑

14.MVC框架-异常处理

15.MVP架构设计:Google官方MVP思想解读

16.开源MVP框架

17.MVC、MVP、MVVM,到底该怎么选?

第三章. 国内知名架构文章

1. 抖音 iOS 工程架构演进

1.1 前言介绍

1.2 抖音工程架构演进

1.3 组件化

1.4 流水线式迭代开发

1.5 抖音工程架构演进

1.6 组件化探索过程中遇到的一些问题:

2. 美团外卖 Android 平台化架构演进实践

2.1 平台化背景

2.2 屡次探索

2.3 搜索库拆分实践

2.4 页面组件化实践

2.5 MVP 分层复用实践

2.6 中间层实践

2.7 平台化实践

2.8 平台化总结

2.9 展望

3. 安居客 Android 项目架构演进

3.1 三网合并

3.2 由RxJava驱动的MVP架构

3.3、组件化与模块化

4. 携程 Android App 插件化和动态加载实践

4.1 需求驱动

4.2 原理

4.3 实现

4.4 收益与代价

5. 微信Android客户端架构演进之路

5.1拓荒

5.2成长

5.3变革

5.4 进化

5.5 开放

6. 千万级用户的 Android 客户端是如何养成的 | 架构师实践日

6.5 模块内的解耦

6.6 灰度发布机制

6.7 模块间通信

6.8 总结

7.手机淘宝构架演化实践

7.1.Bundle

7.2 WebApp

7.3 PackageApp

7.4 研发支撑

7.5 测试支撑

7.6 运维支撑

7.7 发布支撑

8. 英语流利说 Android 架构演进

8.1 英语流利说早期架构

8.2 英语流利说核心架构

8.3 核心架构说明

8.4 引入多进程层

8.5 英语流利说常用辅助架构

8.6 英语流利说常用支持型架构

如有需要参考的可以直接去我 GitHub 访问查阅,希望能帮助到大家学习提升。

字节跳动前技术总监开源分享《Android架构设计权威指南》,YYDS!的更多相关文章

  1. 字节跳动-前端面试题 Multi Promise Order

    字节跳动-前端面试题 Multi Promise Order Promise Order Async/Await async function async1 () { console.log('asy ...

  2. 前后端分离之Web前端架构设计

    架构设计:前后端分离之Web前端架构设计 在前面的文章里我谈到了前后端分离的一些看法,这个看法是从宏观的角度来思考的,没有具体的落地实现,今天我将延续上篇文章的主题,从纯前端的架构设计角度谈谈前后端分 ...

  3. Android架构设计和软硬整合完整训练

    Android架构设计和软硬整合完整训练 Android架构设计和软硬整合完整训练:HAL&Framework&Native Service&Android Service&a ...

  4. 刷到血赚!字节跳动内部出品:722页Android开发《360°全方面性能调优》学习手册首次外放,附项目实战!

    前言 我们平时在使用软件的过程中是不是遇到过这样的情况:"这个 app 怎么还没下载完!"."太卡了吧!"."图片怎么还没加载出来!".&q ...

  5. 架构设计:前后端分离之Web前端架构设计

    在前面的文章里我谈到了前后端分离的一些看法,这个看法是从宏观的角度来思考的,没有具体的落地实现,今天我将延续上篇文章的主题,从纯前端的架构设计角度谈谈前后端分离的一种具体实现方案,该方案和我原来设想有 ...

  6. Android架构设计之插件化、组件化

    如今移动app市场已经是百花齐放,其中有不乏有很多大型公司.巨型公司都是通过app创业发展起来的:app类型更加丰富,有电子商务.有视频.有社交.有工具等等,基本上涵盖了各行各业每个角落,为了更加具有 ...

  7. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...

  8. Docker容器技术的PaaS云平台架构设计***

    基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件.数据服务.云服务器等资源,开发人员 ...

  9. 社区布道师揭秘消息中间件技术内幕,撰写MQ架构设计与实现原理

    RocketMQ是什么 RocketMQ是由阿里捐赠给Apache的一款分布式.队列模型的开源消息中间件,经历了淘宝双十一的洗礼. RocketMQ的特性 RocketMQ基本概念 Client端 P ...

随机推荐

  1. Redis 雪崩、穿透、击穿、并发、缓存讲解以及解决方案

    1.缓存雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机. 比如一个雪崩的简单过程 1.redis集群大面积故障 2.缓存 ...

  2. 2、mysql编译安装

    2.1前言: 此文档介绍的是cmake编译安装的方式: 二进制的安装方式在linux运维_集群_01中有详细的安装说明(已经编译完成,进行初始操作即可) 初始化操作时需要对编译好的mysql进行一下备 ...

  3. SpringCloud:扩展zuul配置路由访问

    继续上次整合SpringCloud的demo进行扩展zuul:https://www.cnblogs.com/nhdlb/p/12555968.html  这里我把zuul划分出一个模块单独启动 创建 ...

  4. ExtJs4学习(八)数据代理Proxy

    ExtJs数据代理我们介绍常用的四种,但会着重介绍ajax代理,因为日常开发中,这个最为常用 Ext.data.proxy.Ajax AjaxProxy(Ajax数据代理类)是你的应用程序中使用最广泛 ...

  5. SpringMVC(9)实现注解式权限验证

    对大部分系统来说都需要权限管理来决定不同用户可以看到哪些内容,那么如何在Spring MVC中实现权限验证呢?当然我们可以继续使用servlet中的过滤器Filter来实现.但借助于Spring MV ...

  6. php弱类型比较

    前言:今天XCTF题目中出现了弱类型比较,特别过来记录一下, 0x01: == 是弱类型比较,两个不同类型比较时,会自动转换成相同类型后再比较值 ===是强比较,需要比较值和类型 0x02: 看下图案 ...

  7. 两个有序数组合并为一个有序数组---python

    def merge(a, b): """ 合并2个有序数组,默认a,b都是从小到大的有序数组 """ # 1.临时变量 i, j = 0, ...

  8. WPF下如何使用TTF字体

    之前再写代码的时候如果遇到了图标,我都喜欢再资源文件下创建JPG或者PNG来作为图片. 但是随着TTF字体图标的普及,图标类型的的图片越来越多的被放入到TTF中. 这篇也主要是写再WPF下如何使用TT ...

  9. WSL2:在Windows系统中开发Linux程序的又一神器

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  10. 日志采集工具Flume的安装与使用方法

    安装Flume,参考厦门大学林子雨教程:http://dblab.xmu.edu.cn/blog/1102/ 并完成案例1 1.案例1:Avro source Avro可以发送一个给定的文件给Flum ...