本書首先介紹Android組件化開發(fā)的基礎(chǔ)知識,剖析組件化的開發(fā)步驟和常見問題,探究組件化編譯原理和編譯優(yōu)化措施。其次在項(xiàng)目架構(gòu)上,介紹如何組織團(tuán)隊(duì)來使用組件化開發(fā),并將業(yè)務(wù)和人力進(jìn)行解耦。*后深入介紹組件化分發(fā)技術(shù)及運(yùn)用,探討組件化架構(gòu)的演進(jìn)及架構(gòu)的思維。
Android走過的十個(gè)年頭,其技術(shù)演進(jìn)也是有跡可循的,本書作者基于自己在大型App架構(gòu)的技術(shù)演進(jìn)中成長的經(jīng)歷,將遇到的相關(guān)問題進(jìn)行深入剖析,包括Android 組件化架構(gòu)、模塊化架構(gòu)、插件化架構(gòu)等,并對近來國內(nèi)熱門Android架構(gòu)體系及其研發(fā)流程,以及開發(fā)中遇到的問題進(jìn)行深入剖析。
前 言
這是一本關(guān)于Android組件化的書籍
這是一本關(guān)于Android入門的書籍。
這是一本關(guān)于Android進(jìn)階的書籍。
這是一本關(guān)于Android編程原理的書籍。
這是一本關(guān)于Android架構(gòu)的書籍。
我更愿意將這本書看作一本關(guān)于思維哲學(xué)的書籍。
書的用途,因人而異,有人用來墊書桌,有人將其作為工具,有人將其細(xì)細(xì)品味……
你用什么角度和什么態(tài)度來看待圖書,它就會以什么形態(tài)展現(xiàn)在你眼前。
? 當(dāng)你將它作為一本Android工具書時(shí),它會指導(dǎo)你對Android的進(jìn)階學(xué)習(xí)。
? 當(dāng)你將它作為一本軟件架構(gòu)書籍時(shí),它會將工具和人的思想關(guān)聯(lián)來調(diào)整你對架構(gòu)的認(rèn)知。
? 當(dāng)你將它作為一本思維哲學(xué)書籍時(shí),你有可能對Android開發(fā)有新的認(rèn)識。
本書概要
第1章:組件化基礎(chǔ)。
本章重點(diǎn)介紹組件化中開發(fā)的基礎(chǔ)概念。首先介紹組件化中的依賴和解耦,然后介紹組件化中AndroidManifest的合成差異,最后深度認(rèn)識Application的重要作用。
第2章:組件化編程。
本章介紹組件化中相關(guān)的開發(fā)編程技術(shù),包括組件化通信、組件化存儲、跨模塊跳轉(zhuǎn)、資源沖突解決、多模塊渠道、資源混淆、數(shù)據(jù)庫運(yùn)用、簽名相關(guān)的運(yùn)用及原理剖析。
第3章:組件化優(yōu)化。
本章介紹如何使用Gradle對組件化中多種使用方式的優(yōu)化,以及對編譯適配的優(yōu)化。隨后介紹使用Git倉庫來組織多人進(jìn)行組件化開發(fā),以及多人開發(fā)的項(xiàng)目解耦。
第4章:組件化編譯。
本章介紹如何在組件化項(xiàng)目中縮短編譯時(shí)間。首先介紹Gradle的打包流程,以及Gradle構(gòu)建基礎(chǔ)。隨后介紹Instant Run的使用和適用場景。最后介紹Freeline增量編譯,以及部分原理剖析。
第5章:組件化分發(fā)。
本章介紹如何在單頁面中處理復(fù)雜的業(yè)務(wù)邏輯。首先介紹Activity、Fragment、View的生命周期,以及組件化分發(fā)架構(gòu)的嵌入。隨后介紹依賴倒置型的設(shè)計(jì)和層級問題的解決方法,其中插敘了編譯期注解的高效生成代碼的形式。最后介紹動態(tài)加載配置的形式。
第6章:組件化流通。
本章介紹如何在組件化中工程封裝工具SDK。首先介紹Maven基礎(chǔ)和組件化中的緩存策略,隨后介紹組件化中SDK的合成方式,最后介紹如何將SDK發(fā)布到流通平臺中。
第7章:架構(gòu)模板。
本章介紹如何制定組件化多人開發(fā)規(guī)范。首先介紹自定義Android Studio的模板及組件化模板的制作,隨后介紹注解提示的使用。
第8章:架構(gòu)演進(jìn)。
本章介紹Android工程架構(gòu)的演進(jìn),包括線程工程架構(gòu)、組件化基礎(chǔ)架構(gòu)、模塊化架構(gòu)、多模板架構(gòu),以及進(jìn)程化架構(gòu)的原理基礎(chǔ)。讓讀者能對Android架構(gòu)有更加深入的了解。
讀者對象
本書適合以下學(xué)習(xí)階段的讀者閱讀:
? Android進(jìn)階學(xué)習(xí)階段;
? Android組件化學(xué)習(xí)階段;
? Android架構(gòu)初級學(xué)習(xí)階段
? 移動端開發(fā)思維哲學(xué)學(xué)習(xí)階段。
致謝
感謝父母對我的思想啟蒙的培育;感謝我的妻子丸子對我寫作的鼓勵(lì)和生活的照顧;感謝我曾經(jīng)就職的廣州三星和現(xiàn)在在職的歡聚時(shí)代。感謝Android組件化架構(gòu)QQ群中的映客科技King、搜狐56夜閃冰、RetroX、亞倫,以及各位同學(xué)對我出版書籍內(nèi)容上的建議。
勘誤和互動
如果讀者發(fā)現(xiàn)本書中文字、代碼和圖片的信息存在錯(cuò)誤或者紕漏,歡迎反饋給我。若是對書中內(nèi)容或者Android組件化架構(gòu)存在疑問,可以在我的簡書、掘金、QQ群中與我互動,屆時(shí)會在這些平臺發(fā)布勘誤的信息,并歡迎各位讀者的提問和建議。
QQ群:316556016
簡書:http://www.jianshu.com/u/cd0fe10b01d2
掘金:https://juejin.im/user/565c6d3100b0acaad47e9050
GitHub:https://github.com/cangwang
蒼王
蒼王,歡聚時(shí)代 YY高級工程師,具有多年Android研發(fā)經(jīng)驗(yàn),致力于Android組件化、進(jìn)程化的研究。活躍于簡書、掘金等技術(shù)社區(qū),喜歡分享自己的技術(shù)經(jīng)驗(yàn)。
第1章 組件化基礎(chǔ)
1.1 你知道組件化嗎
1.2 基礎(chǔ)組件化架構(gòu)介紹
1.2.1 依賴
1.2.2 聚合和解耦
1.3 重新認(rèn)識AndroidManifest
1.3.1 AndroidManifest屬性匯總
1.3.2 AndroidManifest屬性變更
1.4 你所不知道的Application
1.4.1 Applicaton的基礎(chǔ)和作用
1.4.2 組件化Application
1.5 小結(jié)
第2章 組件化編程
2.1 本地廣播
2.1.1 本地廣播基礎(chǔ)介紹
2.1.2 使用方法
2.1.3 本地廣播源碼分析
2.2 組件間通信機(jī)制
2.2.1 組件化層級障礙
2.2.2 事件總線
2.2.3 組件化事件總線的考量
2.3 組件間跳轉(zhuǎn)
2.3.1 隱式跳轉(zhuǎn)
2.3.2 ARouter路由跳轉(zhuǎn)
2.3.3 Android路由原理
2.3.4 組件化最佳路由
2.3.5 空類索引
2.4 動態(tài)創(chuàng)建
2.4.1 反射基礎(chǔ)
2.4.2 反射進(jìn)階
2.4.3 反射簡化jOOR
2.4.4 動態(tài)創(chuàng)建Fragment
2.4.5 動態(tài)配置Application
2.5 數(shù)據(jù)存儲
2.5.1 數(shù)據(jù)的存儲方式
2.5.2 組件化存儲
2.5.3 組件化數(shù)據(jù)庫
2.6 權(quán)限管理
2.6.1 權(quán)限機(jī)制
2.6.2 組件化權(quán)限
2.6.3 動態(tài)權(quán)限框架
2.6.4 路由攔截
2.7 靜態(tài)常量
2.7.1 資源限制
2.7.2 組件化的靜態(tài)變量
2.7.3 R2.java的秘密
2.8 資源沖突
2.8.1 組件化的資源匯合
2.8.2 組件化資源沖突
2.9 組件化混淆
2.9.1 混淆基礎(chǔ)
2.9.2 資源混淆
2.9.3 組件化混淆
2.10 多渠道模塊
2.10.1 多渠道基礎(chǔ)
2.10.2 批量打包
2.10.3 多渠道模塊配置
2.11 小結(jié)
第3章 組件化優(yōu)化
3.1 Gradle優(yōu)化
3.1.1 Gradle基礎(chǔ)
3.1.2 版本參數(shù)優(yōu)化
3.1.3 調(diào)試優(yōu)化
3.1.4 資源引用配置
3.1.5 Gradle 4.1依賴特性
3.2 Git組件化部署
3.2.1 submodule子模塊
3.2.2 subtree
3.3 小結(jié)
第4章 組件化編譯
4.1 Gradle編譯
4.1.1 Android基礎(chǔ)編譯流程
4.1.2 Instant Run
4.1.3 更優(yōu)的Gradle構(gòu)建策略
4.2 極速增量編譯
4.2.1 Freeline的使用
4.2.2 Freeline運(yùn)行介紹
4.3 小結(jié)
第5章 組件化分發(fā)
5.1 Activity分發(fā)
5.1.1 Activity的生命周期
5.1.2 Acitity分發(fā)技術(shù)
5.2 Fragment分發(fā)
5.2.1 Fragment的生命周期
5.2.2 Fragment分發(fā)技術(shù)
5.3 View分發(fā)
5.3.1 View的生命周期
5.3.2 View分發(fā)技術(shù)
5.4 依賴倒置
5.4.1 依賴倒置原則
5.4.2 依賴倒置分發(fā)
5.5 組件化列表配置
5.5.1 Javapoet語法基礎(chǔ)
5.5.2 編譯時(shí)注解配置
5.5.3 集成配置列表
5.6 加載優(yōu)化
5.6.1 線程加載
5.6.2 模塊懶加載
5.7 層級限制
5.8 多模板設(shè)計(jì)
5.8.1 多模板注解
5.8.2 腳本配置
5.8.3 動態(tài)配置
5.9 小結(jié)
第6章 組件化流通
6.1 內(nèi)部流通
6.1.1 Maven基礎(chǔ)
6.1.2 本地緩存
6.1.3 遠(yuǎn)程倉庫
6.2 組件化SDK
6.2.1 SDK基礎(chǔ)知識
6.2.2 Python腳本合并
6.2.3 fat-aar腳本合并
6.3 JCenter共享
6.4 小結(jié)
第7章 架構(gòu)模板
7.1 組件化模板
7.1.1 模板基礎(chǔ)
7.1.2 模板制作
7.1.3 實(shí)時(shí)模板
7.1.4 頭部注釋模板
7.2 注解檢測
7.3 小結(jié)
第8章 架構(gòu)演化
8.1 基礎(chǔ)架構(gòu)
8.2 基礎(chǔ)組件化
8.3 模塊化
8.4 多模板化
8.5 插件化
8.6 進(jìn)程化
8.7 小結(jié)
附錄A 思維與架構(gòu)