[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 性能優化
- 數據跨平臺