內容簡介
本書詳細介紹了 13 套 Android 開發規範、3 套熱門App 框架、12 個常用功能模組、14 套 App 解決方案,以及高效開發工具。最後,本書還以實訓方式,展現了 GitHub 客戶端開發的前前後後,作為全書知識的總結。本書不僅實例豐富,還提供完整源碼和墓再,適合剛入門全催 Android 開發人員以及技術管理人員閱讀,同時也可作為高等院校相關專業的教學、自學用書。
圖書目錄
第 1篇 規範篇
第 1章 編碼規範 2
1.1 命名規範 2
1.1.1 Android包命名規範 2
1.1.2 Android代碼命名規範 4
1.1.3 Android資源檔案命名規範 6
1.2 代碼規範 10
1.2.1 IDE規範 10
1.2.2 CheckStyle 10
1.2.3 代碼注釋 15
1.2.4 JavaDoc 18
1.2.5 .gitignore 21
1.2.6 ProGuard 21
第 2章 開發規範 23
2.1 API接口規範 23
2.1.1 API接口安全設計規範 23
2.1.2 API接口通用設計規範 25
2.2 SDK設計規範 28
2.2.1 SDK通用規範 28
2.2.2 SDK開發規範 28
2.2.3 SDK開發實例 29
2.3 App常用安全開發規範 30
2.3.1 加殼 30
2.3.2 組件外露 30
2.3.3 WebView 31
2.3.4 局囑希Logcat日誌 31
2.3.5 網路請求 31
2.3.6 API接口 32
2.3.7 so檔案 32
2.4 CodeReview規範 32
2.4.1 CodeReview目的 32
2.4.2 CodeReview清單vs Bad Smell 33
2.4.3 CodeReview方式 34
2.4.4 CodeReview輸出 34
第3章 版本管理規範 35
3.1 Git版本管理規範 35
3.1.1 Git版本管理說明 35
3.1.2 Git版本管理流程圖 36
3.1.3 Git分支命名規範 37
3.1.4 Git分支管理表格圖 37
3.1.5 Git備忘錄 37
3.2 Maven使用規範 37
3.2.1 Maven簡介 37
3.2.2 snapshot和release 38
3.2.3 Maven上傳的兩種方法 38
3.2.4 引用Maven 41
3.2.5 Maven版本號 41
3.2.6 免費Maven伺服器 41
3.2.7 上傳到JCenter 41
第4章 打包發布規範 43
4.1 App打包規範 43
4.1.1 打包前 43
4.1.2 打包後 44
4.1.3 發版後 44
4.1.4 發版備註 45
4.2 App發布規範 45
4.2.1 全量發布 45
第5章 團隊管理規範 47
5.1 任務管理規範 47
5.2 需求評審規範 48
5.3 過程管理規範 48
第 2篇 開發篇
第6章 常用設計模式 51
6.1 設計模式六大原則 51
6.1.1 單一職責原則 51
6.1.6 開閉原則 56
6.2 單例模式 56
6.2.1 單例模式介紹 56
6.2.2 單例模式實現 57
6.2.3 靜態類 58
6.2.4 單例和靜態類的選擇 58
6.3 工廠模式 59
6.3.1 簡單工廠 59
6.3.2 工廠方法 60
6.3.3 抽象工廠 再檔宙永62
6.4 觀察者模式 63
6.4.1 Java自帶的觀察者 63
6.4.2 自己實現觀察者模式 64
6.5 Builder模式 65
6.5.1 為什麼要用Builder模式 65
6.5.2 Builder模式的實現 67
6.6 代理模式 68
6.6.1 靜態代理 69
6.6.2 動態代理 69
6.6.3 動態代理套用:簡單工廠 70
6.6.4 動態代理套用:AOP 72
6.7 策略模式 72
6.7.1 策略模式介紹 72
6.7.2 策略模式實現 73
6.7.3 關說享束於SLF4J 76
6.8 模板模式 79
6.8.1 模板模式介紹 79
6.8.2 模板模式實戒判籃現 79
6.9 適配器模式 80
6.9.1 適配器模式介朵多院愉紹 80
6.9.2 適配器模式實現 81
第7章 設計框架 83
7.1 MVC 83
7.1.1 MVC介紹 83
7.1.2 MVC的優點、缺點、適用範圍 83
7.1.3 MVC實例 84
7.2 MVP 87
7.2.1 MVP介紹 87
7.2.2 MVP的優點、缺點、適用範圍 87
7.2.3 MVP實例 88
7.3 MVVM 89
7.3.1 MVVM介紹 89
7.3.2 MVVM的特點 90
7.3.3 MVVM實例 90
第8章 動手寫框架 93
8.1 TinyMVP 93
8.1.1 回顧MVP 93
8.1.2 常規解決方案 93
8.1.3 MVP最佳化:泛型 94
8.1.4 MVP最佳化:減少接口 95
8.1.5 MVP最佳化:生命周期 96
8.2 TinyMVVM 99
8.2.1 回顧MVVM 99
8.2.2 MVVM第 一種實現 100
8.2.3 MVVM第二種實現 102
8.2.4 MVVM第三種實現 104
8.3 TinyModule 106
8.3.1 關於Module 106
8.3.2 TinyModule的實現 107
8.3.3 拓展:Module的MVP化 109
第9章 常用模組 110
9.1 功能模組 110
9.1.1 網路請求 110
9.1.2 圖片載入 111
9.1.3 資料庫 111
9.1.4 異步分發 112
9.1.5 IOC 112
9.1.6 數據解析 112
9.1.7 許可權 113
9.2 UI模組 113
9.2.1 Adapter 113
9.2.2 Refresh 113
9.2.3 Tab 113
9.2.4 Banner 114
9.2.5 ImageView 114
第 10章 動手寫模組 115
10.1 日誌模組:TinyLog 116
10.1.1 日誌模組需求 116
10.1.2 日誌模組技術分析 117
10.1.3 日誌模組代碼實現 118
10.1.4 總結 122
10.2 許可權模組:TinyPermission 123
10.2.1 許可權模組需求 123
10.2.2 許可權模組技術分析 125
10.2.3 許可權模組代碼實現 126
10.2.4 總結 128
10.3 任務模組:TinyTask 129
10.3.1 任務模組需求 129
10.3.2 任務模組技術分析 130
10.3.3 任務模組代碼實現 131
10.3.4 總結 138
10.4 異步分發模組:TinyBus 138
10.4.1 異步分發模組需求 139
10.4.2 異步分發模組技術分析 139
10.4.3 異步分發模組代碼實現 140
10.4.4 總結 144
10.5 網路模組:TinyHttp 145
10.5.1 網路模組需求 145
10.5.2 網路模組技術分析 146
10.5.3 網路模組代碼實現 147
10.5.4 總結 154
10.6 圖片模組:TinyImage 154
10.6.1 一種封裝圖片調用的方式 154
10.6.2 Glide調用的改造 157
10.6.3 圖片框架的切換 158
10.6.4 總結 161
10.7 資料庫模組:TinySql 161
10.7.1 資料庫模組需求 161
10.7.2 資料庫模組技術分析 163
10.7.3 資料庫模組代碼實現 164
10.7.4 總結 168
10.8 兩種開源資料庫的封裝 169
10.8.1 對GreenDao資料庫的封裝 169
10.8.2 對OrmLite資料庫的封裝 171
10.9 IOC模組:TinyKnifer 173
10.9.1 IOC模組需求 174
10.9.2 IOC實現:註解+反射 174
10.9.3 IOC實現:註解+Annotation
Processor+JavaPoet 176
10.10 Adapter模組:TinyAdapter 183
10.10.1 Adapter模組需求 184
10.10.2 Adapter模組技術分析 187
10.10.3 Adapter模組代碼實現 187
10.10.4 總結 192
10.11 下拉刷新模組:TinyPullTo Refresh
192
10.11.1 下拉刷新模組需求 192
10.11.2 下拉刷新模組技術分析 193
10.11.3 下拉刷新模組代碼實現 193
10.12 綜合套用:TinyTemplate 195
第3篇 擴展篇
第 11章 常用開發解決方案 201
11.1 設計方案:藍湖 201
11.2 產品方案:Axure 203
11.2.1 Axure優點 203
11.2.2 Axure和藍湖 203
11.2.3 Axure實例 204
11.3 Mock方案:Postman 205
11.3.1 為什麼要模擬API接口 205
11.3.2 利用Postman模擬API接口 205
11.4 長連線方案:Mars 208
11.4.1 為什麼用Mars 208
11.4.2 .proto檔案 209
11.4.3 自動生成Java檔案 210
11.4.4 Android中的調用 210
11.5 偽協定方案 211
11.5.1 URL Scheme定義 212
11.5.2 URL Scheme解析 212
11.5.3 URL Scheme套用 212
11.5.4 URL Scheme套用場景 213
11.6 App預埋方案 215
11.6.1 升級 215
11.6.2 功能開關 216
11.6.3 通用彈框 216
11.6.4 舊版本和新版本欄位兼容 217
11.6.5 extension擴展欄位 217
11.6.6 許可權管理 217
11.6.7 域名替換 218
11.7 Gradle配置方案 218
11.7.1 Gradle簡介 218
11.7.2 配置信息 219
11.7.3 使用.each引入依賴庫 220
11.7.4 任務信息 220
11.8 串列與並行方案:RxJava 221
11.8.1 什麼是串列和並行 221
11.8.2 串列:FlatMap 221
11.8.3 串列:Concat 222
11.8.4 並行:Merge 223
11.8.5 並行:Zip 224
11.9 設計一種串列方案 225
11.10 異常處理方案 227
11.10.1 異常介紹 227
11.10.2 異常拋出 228
11.10.3 異常捕獲 229
11.10.4 Android全局異常的捕獲 231
11.10.5 預防異常 232
11.11 Android動畫方案:屬性動畫 232
11.11.1 視圖動畫和屬性動畫 232
11.11.2 屬性動畫的套用 233
11.11.3 Lottie 235
11.12 Android Studio動態調試方案 235
11.13 自定義View方案 238
11.13.1 自定義View簡介 238
11.13.2 View繪製流程 238
11.13.3 坐標系 239
11.13.4 方案一:繼承系統View控制項 239
11.13.5 方案二:組合控制項 241
11.13.6 方案三:重寫View 243
11.14 組件化方案 245
11.14.1 為什麼要進行組件化開發 245
11.14.2 組件化改造方案 246
11.14.3 組件化開發手冊 250
11.14.4 組件化開發實戰 252
第 12章 Android最佳化 255
12.1 記憶體泄漏 255
12.1.1 Static靜態變數 255
12.1.2 InnerClass內部類 257
12.1.3 其他導致記憶體泄漏的場景 260
12.1.4 LeakCanary 262
12.2 編譯速度 262
12.2.1 配置檔案最佳化 263
12.2.2 Gradle腳本最佳化 264
12.2.3 其他最佳化方案 265
第 13章 測試 266
13.1 壓力測試Monkey 266
13.2 JUnit、Espresso、Mockito、Robolectric 267
13.2.1 JUnit 268
13.2.2 Espresso 269
13.2.3 Mockito 269
13.2.4 Robolectric 270
13.2.5 綜合套用 270
13.2.6 擴展:mock植入和反射 272
第 14章 工具 273
14.1 Android模擬器 273
14.1.1 AVD 273
14.1.2 Genymotion 274
14.1.3 MuMu模擬器 274
14.2 文檔管理 275
14.2.1 文檔共享和編輯平台 275
14.2.2 知識管理平台 276
14.2.3 任務管理和缺陷跟蹤平台 276
14.3 9PNG的套用 277
14.3.1 字型陰影 277
14.3.2 用9png圖片實現通用陰影效果 278
14.3.3 用9png圖片實現網路傳輸 279
14.4 CI:持續集成 279
14.4.1 Jenkins 279
14.4.2 Travis 281
14.5 Kotlin學習 282
14.5.1 Kotlin語法手冊 282
14.5.2 Kotlin在Android上的套用 284
14.6 其他的一些與開發相關的工具 286
14.6.1 圖片壓縮 286
14.6.2 源碼閱讀 287
14.6.3 Stetho 288
14.6.4 Android Asset Studio 288
第4篇 實戰篇
第 15章 Github客戶端開發 291
15.1 Github需求 291
15.2 Github原型圖 292
15.3 技術選型 293
15.3.1 架構 293
15.3.2 功能模組 294
15.3.3 UI模組 294
15.3.4 技術方案 295
15.4 開發準備 296
15.4.1 新建工程 296
15.4.2 目錄結構 297
15.4.3 圖示 298
15.4.4 配置檔案 298
15.4.5 輔助工具 300
15.5 開發實現:架構與模組 301
15.5.1 MVVM架構 301
15.5.2 網路模組 301
15.5.3 圖片模組 304
15.5.4 資料庫模組 304
15.5.5 base模組 307
15.5.6 數據模組 311
15.5.7 其他模組 313
15.6 開發實現:業務 314
15.6.1 啟動頁 314
15.6.2 登錄頁 316
15.6.3 首頁 318
15.6.4 開源項目和搜尋 319
15.6.5 國際化 320
第 16章 打包與發布 322
16.1 打包 322
16.2 發布 324
8.1.5 MVP最佳化:生命周期 96
8.2 TinyMVVM 99
8.2.1 回顧MVVM 99
8.2.2 MVVM第 一種實現 100
8.2.3 MVVM第二種實現 102
8.2.4 MVVM第三種實現 104
8.3 TinyModule 106
8.3.1 關於Module 106
8.3.2 TinyModule的實現 107
8.3.3 拓展:Module的MVP化 109
第9章 常用模組 110
9.1 功能模組 110
9.1.1 網路請求 110
9.1.2 圖片載入 111
9.1.3 資料庫 111
9.1.4 異步分發 112
9.1.5 IOC 112
9.1.6 數據解析 112
9.1.7 許可權 113
9.2 UI模組 113
9.2.1 Adapter 113
9.2.2 Refresh 113
9.2.3 Tab 113
9.2.4 Banner 114
9.2.5 ImageView 114
第 10章 動手寫模組 115
10.1 日誌模組:TinyLog 116
10.1.1 日誌模組需求 116
10.1.2 日誌模組技術分析 117
10.1.3 日誌模組代碼實現 118
10.1.4 總結 122
10.2 許可權模組:TinyPermission 123
10.2.1 許可權模組需求 123
10.2.2 許可權模組技術分析 125
10.2.3 許可權模組代碼實現 126
10.2.4 總結 128
10.3 任務模組:TinyTask 129
10.3.1 任務模組需求 129
10.3.2 任務模組技術分析 130
10.3.3 任務模組代碼實現 131
10.3.4 總結 138
10.4 異步分發模組:TinyBus 138
10.4.1 異步分發模組需求 139
10.4.2 異步分發模組技術分析 139
10.4.3 異步分發模組代碼實現 140
10.4.4 總結 144
10.5 網路模組:TinyHttp 145
10.5.1 網路模組需求 145
10.5.2 網路模組技術分析 146
10.5.3 網路模組代碼實現 147
10.5.4 總結 154
10.6 圖片模組:TinyImage 154
10.6.1 一種封裝圖片調用的方式 154
10.6.2 Glide調用的改造 157
10.6.3 圖片框架的切換 158
10.6.4 總結 161
10.7 資料庫模組:TinySql 161
10.7.1 資料庫模組需求 161
10.7.2 資料庫模組技術分析 163
10.7.3 資料庫模組代碼實現 164
10.7.4 總結 168
10.8 兩種開源資料庫的封裝 169
10.8.1 對GreenDao資料庫的封裝 169
10.8.2 對OrmLite資料庫的封裝 171
10.9 IOC模組:TinyKnifer 173
10.9.1 IOC模組需求 174
10.9.2 IOC實現:註解+反射 174
10.9.3 IOC實現:註解+Annotation
Processor+JavaPoet 176
10.10 Adapter模組:TinyAdapter 183
10.10.1 Adapter模組需求 184
10.10.2 Adapter模組技術分析 187
10.10.3 Adapter模組代碼實現 187
10.10.4 總結 192
10.11 下拉刷新模組:TinyPullTo Refresh
192
10.11.1 下拉刷新模組需求 192
10.11.2 下拉刷新模組技術分析 193
10.11.3 下拉刷新模組代碼實現 193
10.12 綜合套用:TinyTemplate 195
第3篇 擴展篇
第 11章 常用開發解決方案 201
11.1 設計方案:藍湖 201
11.2 產品方案:Axure 203
11.2.1 Axure優點 203
11.2.2 Axure和藍湖 203
11.2.3 Axure實例 204
11.3 Mock方案:Postman 205
11.3.1 為什麼要模擬API接口 205
11.3.2 利用Postman模擬API接口 205
11.4 長連線方案:Mars 208
11.4.1 為什麼用Mars 208
11.4.2 .proto檔案 209
11.4.3 自動生成Java檔案 210
11.4.4 Android中的調用 210
11.5 偽協定方案 211
11.5.1 URL Scheme定義 212
11.5.2 URL Scheme解析 212
11.5.3 URL Scheme套用 212
11.5.4 URL Scheme套用場景 213
11.6 App預埋方案 215
11.6.1 升級 215
11.6.2 功能開關 216
11.6.3 通用彈框 216
11.6.4 舊版本和新版本欄位兼容 217
11.6.5 extension擴展欄位 217
11.6.6 許可權管理 217
11.6.7 域名替換 218
11.7 Gradle配置方案 218
11.7.1 Gradle簡介 218
11.7.2 配置信息 219
11.7.3 使用.each引入依賴庫 220
11.7.4 任務信息 220
11.8 串列與並行方案:RxJava 221
11.8.1 什麼是串列和並行 221
11.8.2 串列:FlatMap 221
11.8.3 串列:Concat 222
11.8.4 並行:Merge 223
11.8.5 並行:Zip 224
11.9 設計一種串列方案 225
11.10 異常處理方案 227
11.10.1 異常介紹 227
11.10.2 異常拋出 228
11.10.3 異常捕獲 229
11.10.4 Android全局異常的捕獲 231
11.10.5 預防異常 232
11.11 Android動畫方案:屬性動畫 232
11.11.1 視圖動畫和屬性動畫 232
11.11.2 屬性動畫的套用 233
11.11.3 Lottie 235
11.12 Android Studio動態調試方案 235
11.13 自定義View方案 238
11.13.1 自定義View簡介 238
11.13.2 View繪製流程 238
11.13.3 坐標系 239
11.13.4 方案一:繼承系統View控制項 239
11.13.5 方案二:組合控制項 241
11.13.6 方案三:重寫View 243
11.14 組件化方案 245
11.14.1 為什麼要進行組件化開發 245
11.14.2 組件化改造方案 246
11.14.3 組件化開發手冊 250
11.14.4 組件化開發實戰 252
第 12章 Android最佳化 255
12.1 記憶體泄漏 255
12.1.1 Static靜態變數 255
12.1.2 InnerClass內部類 257
12.1.3 其他導致記憶體泄漏的場景 260
12.1.4 LeakCanary 262
12.2 編譯速度 262
12.2.1 配置檔案最佳化 263
12.2.2 Gradle腳本最佳化 264
12.2.3 其他最佳化方案 265
第 13章 測試 266
13.1 壓力測試Monkey 266
13.2 JUnit、Espresso、Mockito、Robolectric 267
13.2.1 JUnit 268
13.2.2 Espresso 269
13.2.3 Mockito 269
13.2.4 Robolectric 270
13.2.5 綜合套用 270
13.2.6 擴展:mock植入和反射 272
第 14章 工具 273
14.1 Android模擬器 273
14.1.1 AVD 273
14.1.2 Genymotion 274
14.1.3 MuMu模擬器 274
14.2 文檔管理 275
14.2.1 文檔共享和編輯平台 275
14.2.2 知識管理平台 276
14.2.3 任務管理和缺陷跟蹤平台 276
14.3 9PNG的套用 277
14.3.1 字型陰影 277
14.3.2 用9png圖片實現通用陰影效果 278
14.3.3 用9png圖片實現網路傳輸 279
14.4 CI:持續集成 279
14.4.1 Jenkins 279
14.4.2 Travis 281
14.5 Kotlin學習 282
14.5.1 Kotlin語法手冊 282
14.5.2 Kotlin在Android上的套用 284
14.6 其他的一些與開發相關的工具 286
14.6.1 圖片壓縮 286
14.6.2 源碼閱讀 287
14.6.3 Stetho 288
14.6.4 Android Asset Studio 288
第4篇 實戰篇
第 15章 Github客戶端開發 291
15.1 Github需求 291
15.2 Github原型圖 292
15.3 技術選型 293
15.3.1 架構 293
15.3.2 功能模組 294
15.3.3 UI模組 294
15.3.4 技術方案 295
15.4 開發準備 296
15.4.1 新建工程 296
15.4.2 目錄結構 297
15.4.3 圖示 298
15.4.4 配置檔案 298
15.4.5 輔助工具 300
15.5 開發實現:架構與模組 301
15.5.1 MVVM架構 301
15.5.2 網路模組 301
15.5.3 圖片模組 304
15.5.4 資料庫模組 304
15.5.5 base模組 307
15.5.6 數據模組 311
15.5.7 其他模組 313
15.6 開發實現:業務 314
15.6.1 啟動頁 314
15.6.2 登錄頁 316