Android進階指北

Android進階指北

《Android進階指北》的作者是劉望舒,由電子工業出版社於2020年9月出版。

基本介紹

  • 書名:Android進階指北
  • 作者劉望舒
  • 出版社:電子工業出版社
  • 出版時間:2020年9月
  • 頁數:484 頁
  • 定價:109 元
  • 開本:16 開
  • ISBN:9787121393754
目錄,內容簡介,

目錄

Android進階三部曲知識體系 1
第1章 系統源碼的下載、編譯、調試 5
1.1 使用VirtualBox安裝Ubuntu 5
1.1.1 安裝Ubuntu的步驟 6
1.1.2 安裝增強工具 12
1.2 AOSP源碼下載 14
1.2.1 AOSP簡介 14
1.2.2 下載repo 15
1.2.3 下載源碼 15
1.3 核心源碼下載 16
1.4 系統源碼的整編和單編 18
1.4.1 編譯系統概述 18
1.4.2 編譯源碼的方式 20
1.4.3 準備編譯環境 20
1.4.4 源碼整編 21
1.4.5 源碼單編 24
1.5 Source Insight導入系統源碼 25
1.5.1 新建源碼項目 25
1.5.2 定位檔案 27
1.5.3 全局搜尋 28
1.6 Android Studio導入系統源碼 29
1.7 Android Studio調試系統源碼 33
1.7.1 AOSP源碼項目調試 34
1.7.2 導入部分源碼調試 38
1.7.3 新建Android項目調試 39
1.8 本章小結 40
第2章 理解包管理機制和PMS 41
2.1 PackageInstaller的初始化 41
2.1.1 PackageManager簡介 42
2.1.2 APK的檔案結構和安裝方式 42
2.1.3 尋找PackageInstaller入口 43
2.1.4 PackageInstallerActivity解析 47
2.1.5 PackageInstaller初始化的過程 51
2.2 PackageInstaller安裝APK過程 52
2.2.1 PackageInstaller中的處理 52
2.2.2 Java框架層的處理 57
2.2.3 PackageInstaller安裝APK的過程 59
2.3 PMS處理APK的安裝過程 59
2.3.1 PackageHandler處理安裝訊息 60
2.3.2 複製APK的處理 66
2.3.3 PMS處理APK安裝 70
2.3.4 PMS處理APK安裝的步驟 76
2.4 PMS的創建過程 77
2.4.1 SystemServer處理部分 77
2.4.2 PMS構造方法 80
2.5 APK解析過程 91
2.5.1 引入PackageParser 91
2.5.2 PackageParser解析APK 92
2.5.3 Package的數據結構 99
2.6 本章小結 100
第3章 理解輸入系統和IMS 102
3.1 輸入事件傳遞流程的組成部分 103
3.2 IMS的誕生 105
3.2.1 SystemServer處理部分 105
3.2.2 InputManagerService構造方法 107
3.3 IMS的啟動過程 110
3.4 InputDispatcher的啟動過程 112
3.5 InputReader處理事件的過程 113
3.6 輸入事件的處理總結 119
3.7 InputReader的加工類型 120
3.8 InputDispatcher的分發過程 123
3.8.1 喚醒InputDispatcherThread 123
3.8.2 InputDispatcher進行分發 124
3.9 事件分發到目標視窗的過程 128
3.9.1 為事件尋找合適的分發目標 128
3.9.2 處理點擊形式的事件 132
3.9.3 向目標視窗傳送事件 135
3.9.4 Motion事件分發過程總結 136
3.10 本章小結 138
第4章 IPC機制 139
4.1 Linux和Android的IPC機制 139
4.1.1 Linux中的IPC機制 139
4.1.2 Android中的IPC機制 141
4.2 開啟多進程 142
4.2.1 開啟多進程舉例 142
4.2.2 開啟多進程引出的問題 144
4.3 用Messenger進行進程間通信 146
4.4 使用AIDL實現跨進程方法調用 150
4.4.1 創建AIDL檔案 150
4.4.2 創建服務端 152
4.4.3 客戶端調用 153
4.5 用ContentProvider進行進程間通信 155
4.5.1 建立資料庫,方便ContentProvider使用 155
4.5.2 使用ContentProvider對資料庫進行操作 156
4.5.3 在Activity中調用另一個進程的GameProvider方法 158
4.6 用Socket實現跨進程聊天程式 160
4.7 本章小結 167
第5章 Native Binder原理 168
5.1 學習Binder的前置知識點 168
5.1.1 Linux和Binder的IPC通信原理 169
5.1.2 使用Binder的原因 173
5.1.3 學習Binder的原因 174
5.2 ServiceManager中的Binder機制 175
5.2.1 基於Binder通信的C/S架構 175
5.2.2 MediaServer的main函式 176
5.2.3 每個進程唯一的ProcessState實例 177
5.2.4 解析ServiceManager中的Binder機制 180
5.2.5 小結 187
5.3 系統服務的註冊過程 187
5.3.1 從調用鏈角度說明MediaPlayerService的註冊過程 187
5.3.2 從進程角度說明MediaPlayerService的註冊過程 195
5.3.3 小結 196
5.4 ServiceManager的啟動過程 196
5.4.1 打開binder設備 198
5.4.2 註冊成為Binder機制的上下文管理者 201
5.4.3 循環等待和處理客戶端發來的請求 203
5.5 系統服務的獲取過程 206
5.5.1 客戶端MediaPlayerService請求獲取服務 206
5.5.2 服務端ServiceManager處理請求 212
5.6 本章小結 218
第6章 Java Binder原理 219
6.1 Java Binder的JNI註冊 219
6.1.1 Binder類的註冊 223
6.1.2 BinderInternal類的註冊 224
6.2 Java Binder中系統服務的註冊過程 225
6.2.1 將AMS註冊到ServiceManager 226
6.2.2 引出JavaBBinder 230
6.2.3 解析JavaBBinder 232
6.2.4 Java Binder架構 234
6.3 本章小結 235
第7章 Groovy基礎 236
7.1 Groovy概述 236
7.2 Groovy編寫和調試 237
7.3 變數 237
7.4 方法 237
7.5 類 238
7.6 語句 239
7.6.1 斷言 239
7.6.2 for循環 239
7.6.3 switch語句 240
7.7 數據類型 241
7.7.1 字元串 241
7.7.2 List 242
7.7.3 Map 242
7.7.4 閉包(Closure) 243
7.8 I/O操作 244
7.8.1 檔案讀取 244
7.8.2 檔案寫入 244
7.9 其他 245
7.9.1 asType 245
7.9.2 判斷是否為真 245
7.9.3 安全取值 245
7.9.4 with操作符 246
7.10 本章小結 246
第8章 Gradle核心思想 247
8.1 Gradle概述 247
8.1.1 項目自動化 248
8.1.2 構建工具 248
8.1.3 Gradle的特性 253
8.2 Gradle基礎知識 255
8.2.1 配置Gradle環境 255
8.2.2 實現Hello World 257
8.2.3 Gradle的任務 258
8.2.4 Gradle日誌級別 260
8.2.5 Gradle 命令行 261
8.3 被忽視的Gradle Wrapper 263
8.3.1 為什麼需要Gradle Wrapper 263
8.3.2 構建Gradle Wrapper 264
8.3.3 配置Gradle Wrapper 265
8.3.4 使用Gradle Wrapper 266
8.3.5 升級Gradle Wrapper 267
8.3.6 自定義Gradle Wrapper 268
8.4 Gradle外掛程式基礎 268
8.4.1 Gradle外掛程式概述 268
8.4.2 套用Gradle外掛程式 270
8.4.3 外掛程式DSL 272
8.4.4 自定義對象外掛程式 273
8.4.5 Gradle外掛程式的作用和優點 274
8.5 自定義Gradle外掛程式 274
8.5.1 在build.gradle中編寫 275
8.5.2 在buildSrc工程項目中編寫 277
8.5.3 在獨立項目中編寫 278
8.6 本章小結 281
第9章 Gradle的Android外掛程式 282
9.1 什麼是Gradle的Android外掛程式 282
9.2 Android Studio的模組類型和項目視圖 283
9.3 項目build.gradle 284
9.4 模組build.gradle 285
9.4.1 Gradle的Android外掛程式類型 286
9.4.2 Android塊 286
9.4.3 dependencies塊 291
9.5 Android簽名檔案配置 292
9.5.1 自定義簽名信息檔案 292
9.5.2 本地添加簽名信息檔案 293
9.6 Gradle的庫依賴 294
9.7 Gradle的庫依賴管理 295
9.7.1 Gradle的依賴傳遞 296
9.7.2 Gradle的依賴檢查 296
9.7.3 Gradle的依賴衝突 299
9.8 本章小結 301
第10章 Android Jetpack架構組件 302
10.1 Android Jetpack簡介 303
10.2 Android Jetpack分類 303
10.2.1 Architecture 304
10.2.2 Foundationy 305
10.2.3 Behavior 306
10.2.4 UI 307
10.3 在套用中引入Jetpack相關組件 307
10.4 使用Lifecycle 307
10.4.1 為什麼需要Lifecycle 307
10.4.2 如何使用Lifecycle 309
10.4.3 Lifecycle套用舉例 312
10.4.4 自定義LifecycleOwner 315
10.5 Lifecycle的原理 316
10.5.1 Lifecycle的生命周期狀態事件和狀態 316
10.5.2 Lifecycle如何觀察Activity和Fragment的生命周期 317
10.5.3 Lifecycle關聯類 327
10.6 使用LiveData 328
10.6.1 什麼是LiveData 328
10.6.2 LiveData的基本用法 329
10.6.3 更改LiveData中的數據 330
10.6.4 合併多個LiveData數據源 332
10.6.5 拓展LiveData對象 333
10.7 LiveData的原理 335
10.7.1 LiveData如何觀察組件生命周期變化 335
10.7.2 LiveData的observe方法回調 336
10.7.3 postValue/setValue方法分析 339
10.7.4 Transformations.map方法分析 341
10.7.5 LiveData關聯類 343
10.8 使用ViewModel 344
10.8.1 什麼是ViewModel 345
10.8.2 ViewModel的基本使用方法 345
10.8.3 ViewModel的生命周期 347
10.9 ViewModel的原理 348
10.10 本章小結 351
第11章 跨平台技術演進 352
11.1 Web App 353
11.2 Hybrid App 353
11.2.1 Cordova 354
11.2.2 Ionic 355
11.2.3 VasSonic 355
11.2.4 微信小程式 356
11.3 語言編譯轉換 357
11.4 原生渲染 358
11.4.1 React Native 358
11.4.2 Weex 358
11.4.3 快套用 359
11.5 自繪UI 360
11.5.1 Qt 360
11.5.2 Flutter 361
11.6 本章小結 362
第12章 Dart基礎 363
12.1 Dart開發環境搭建 363
12.2 Dart概述 364
12.3 Dart的特性和重要概念 365
12.4 Dart關鍵字 366
12.5 變數 367
12.6 基本數據類型 367
12.6.1 Number 367
12.6.2 String 368
12.6.3 Boolean 368
12.6.4 List 368
12.6.5 Set 369
12.6.6 Map 369
12.7 函式 369
12.7.1 可選參數 370
12.7.2 默認參數值 370
12.7.3 main函式 371
12.7.4 匿名函式 371
12.8 流程控制語句 371
12.8.1 for循環 372
12.8.2 switch和case 372
12.9 捕獲異常 373
12.10 為類添加新的功能 373
12.11 庫的使用方法 374
12.12 異步支持 375
12.13 使類可調用 376
12.14 創建實例 376
12.15 本章小結 376
第13章 Flutter基礎 377
13.1 Flutter開發環境搭建和Hello World 377
13.1.1 Flutter概述 378
13.1.2 Flutter開發環境搭建 378
13.1.3 運行一個Flutter Demo 383
13.1.4 Hello World 385
13.2 Widget基礎 386
13.2.1 Widget概述 387
13.2.2 Widget的分類 387
13.2.3 Widget的狀態分類 388
13.2.4 根Widget的種類 388
13.3 Basic Widget 389
13.3.1 代碼模板和主題 389
13.3.2 文本 390
13.3.3 圖片 391
13.3.4 凸起按鈕 394
13.3.5 其他Widget 395
13.4 Material組件 397
13.4.1 MaterialApp 398
13.4.2 Scaffold 401
13.4.3 AppBar 403
13.4.4 BottomNavigationBar 405
13.4.5 TabBar 407
13.4.6 Drawer 411
13.5 Scrolling Widget 413
13.5.1 ListView 413
13.5.2 GridView 418
13.5.3 PageView 419
13.6 手勢相關Widget 421
13.6.1 指針事件 421
13.6.2 手勢 422
13.6.3 使用GestureDetector 423
13.6.4 使用Dismissible 424
13.7 資源和圖片 426
13.7.1 指定asset 426
13.7.2 載入文本 427
13.7.3 載入圖片 430
13.8 布局Widget 433
13.8.1 線性布局Widget 433
13.8.2 流式布局Widget 434
13.8.3 層式布局Widget 436
13.8.4 彈性布局Widget 438
13.9 網路請求庫Dio 440
13.9.1 Dio的使用入門 440
13.9.2 Dio訪問網路 441
13.10 JSON數據解析 443
13.10.1 使用json.decode方法 443
13.10.2 手動編寫實體類 444
13.10.3 自動生成實體類 445
13.11 路由與數據傳遞 447
13.11.1 新建路由 447
13.11.2 使用註冊路由 450
13.11.3 路由間數據傳遞 451
13.12 Flutter與Android的相互通信 456
13.12.1 PlatformChannel概述 456
13.12.2 Flutter調用Android 458
13.12.3 Android調用Flutter 461
13.13 本章小結 465

內容簡介

本書是一本Android進階圖書,結合《Android進階之光》和《Android進階解密》兩本書介紹的知識,一同建立起Android套用開發進階知識體系。全書共分13章,主要從3個方面來組織內容:(1)Android套用開發所需要掌握的系統源碼知識,包括系統源碼的下載、編譯、調試,包管理機制,輸入系統,Native Binder,Java Binder;(2)套用開發必需的知識點,包括Groovy基礎、Gradle核心思想、Gradle的Android外掛程式、Android Jetpack架構組件;(3)與跨平台開發相關的知識點,包括跨平台技術演進、Dart基礎、Flutter基礎。

相關詞條

熱門詞條

聯絡我們