Android App 開發入門與實戰
內容描述
本書基於作者 14 年的開發實戰經驗,詳細介紹了 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
4.2.2 灰度發布 45
第5章 團隊管理規範 47
5.1 任務管理規範 47
5.2 需求評審規範 48
5.3 過程管理規範 48
第 2篇 開發篇
第6章 常用設計模式 51
6.1 設計模式六大原則 51
6.1.1 單一職責原則 51
6.1.2 里氏替換原則 52
6.1.3 依賴倒置原則 53
6.1.4 接口隔離原則 55
6.1.5 迪米特法則 55
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 Refresh192
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
作者介紹
熊欣
畢業於電子科技大學,從事移動開發十餘年,擁有多年J2ME、Android、iOS開發經驗,尤其專注於Android開發。
曾就職於騰訊、華為、平安互聯網公司,主導過由零到百萬日活的App項目,
也負責過千萬日活門戶App開發,並擁有國家技術專利40餘篇。