[TOC]
# 工业化(组件化&解耦下沉)
## 背景
原结构是一个庞大的主工程。
* 冲突多
* 模块耦合验证
* 编译速度慢
* 提高迭代速度
## 整体框架设计
1. QRoute框架层:整个模块化的核心基础,主要包括模块管理、服务管理、统一路由、日志监控
2. 组件层:客户端应用基础组件,包括系统资源、网络、存储、多媒体,以及第三方开源库等。
3. 基础组件层:手Q抽象出的核心服务组件,与组件层的差异主要在于聚焦于某个场景的核心能力,头像、动画一般同时涉及前后台。
4. 基础Business层:大部分模块为业务容器,比如主界面、AIO、资料卡、WebView等,他们以框架的形式提供能力,供业务进行定制逻辑开发。
5. 动态模块层:具有动态化能力的业务模块,可以由业务模块改造而成。
6. 壳工程层:未来业务可以新建壳工程,实现垂直业务独立编译、运行、调试。
原则上,框架层、组件层、服务层都可以作为通用能力来实现,与具体业务不直接相关。
## 改造重点:
1. (解构下沉)基础组件
2. (双向解构下沉)基础Business层
3. (单向解构下沉)动态模块层
## 路由框架选型(不同场景使用不同)
强调可溯源,降低改造成本、轻量级
### QAPI
* 解决别人用我
* 约束命名规则,绑定接口和实现
* 适用于业务模块对对外保留api
### 依赖注入
* 解决我用别人
* 模块提供业务员需要实现的接口
* 业务实现接口
### 页面路由方案
QRoute VS ARoute
ARoute强大,可配置强
QRoute用法与原生保持一致,改造成本小
## 改造过程中的问题
### 解构的顺序
优先选择对外依赖少的,被依赖多的模块
### 提供临时api的方式
依赖的项目未解偶,影响本模块的解构进度
提供临时api,实现还在主干工程
### 双分支开发
### Gradle文件的统一配置依赖管理
### 被依赖module中BuildConfig.DEBUG的值总为false
## 长效监控
* 合入流水线检查:
* 监测起code.yml机制,保证模块负责人的及时更新
* 检查build.gralde是否合理(新引入库和新引入依赖/model进入人工监测模块)
* 不过基础模块不允许新增代码,只允许注入进来
* 主工程新增代码需要检查
- Android
- 四大组件
- Activity
- Fragment
- Service
- 序列化
- Handler
- Hander介绍
- MessageQueue详细
- 启动流程
- 系统启动流程
- 应用启动流程
- Activity启动流程
- View
- view绘制
- view事件传递
- choreographer
- LayoutInflater
- UI渲染概念
- Binder
- Binder原理
- Binder最大数据
- Binder小结
- Android组件
- ListView原理
- RecyclerView原理
- SharePreferences
- AsyncTask
- Sqlite
- SQLCipher加密
- 迁移与修复
- Sqlite内核
- Sqlite优化v2
- sqlite索引
- sqlite之wal
- sqlite之锁机制
- 网络
- 基础
- TCP
- HTTP
- HTTP1.1
- HTTP2.0
- HTTPS
- HTTP3.0
- HTTP进化图
- HTTP小结
- 实践
- 网络优化
- Json
- ProtoBuffer
- 断点续传
- 性能
- 卡顿
- 卡顿监控
- ANR
- ANR监控
- 内存
- 内存问题与优化
- 图片内存优化
- 线下内存监控
- 线上内存监控
- 启动优化
- 死锁监控
- 崩溃监控
- 包体积优化
- UI渲染优化
- UI常规优化
- I/O监控
- 电量监控
- 第三方框架
- 网络框架
- Volley
- Okhttp
- 网络框架n问
- OkHttp原理N问
- 设计模式
- EventBus
- Rxjava
- 图片
- ImageWoker
- Gilde的优化
- APT
- 依赖注入
- APT
- ARouter
- ButterKnife
- MMKV
- Jetpack
- 协程
- MVI
- Startup
- DataBinder
- 黑科技
- hook
- 运行期Java-hook技术
- 编译期hook
- ASM
- Transform增量编译
- 运行期Native-hook技术
- 热修复
- 插件化
- AAB
- Shadow
- 虚拟机
- 其他
- UI自动化
- JavaParser
- Android Line
- 编译
- 疑难杂症
- Android11滑动异常
- 方案
- 工业化
- 模块化
- 隐私合规
- 动态化
- 项目管理
- 业务启动优化
- 业务架构设计
- 性能优化case
- 性能优化-排查思路
- 性能优化-现有方案
- 登录
- 搜索
- C++
- NDK入门
- 跨平台
- H5
- Flutter
- Flutter 性能优化
- 数据跨平台