注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)計算機(jī)組織與體系結(jié)構(gòu)Android進(jìn)階指北

Android進(jìn)階指北

Android進(jìn)階指北

定 價:¥109.00

作 者: 劉望舒 著
出版社: 電子工業(yè)出版社
叢編項:
標(biāo) 簽: 暫缺

購買這本書可以去


ISBN: 9787121393754 出版時間: 2020-09-01 包裝: 平裝
開本: 16開 頁數(shù): 484 字?jǐn)?shù):  

內(nèi)容簡介

  本書是一本Android進(jìn)階圖書,結(jié)合《Android進(jìn)階之光》和《Android進(jìn)階解密》兩本書介紹的知識,一同建立起Android應(yīng)用開發(fā)進(jìn)階知識體系。全書共分13章,主要從3個方面來組織內(nèi)容:(1)Android應(yīng)用開發(fā)所需要掌握的系統(tǒng)源碼知識,包括系統(tǒng)源碼的下載、編譯、調(diào)試,包管理機(jī)制,輸入系統(tǒng),Native Binder,Java Binder;(2)應(yīng)用開發(fā)必需的知識點(diǎn),包括Groovy基礎(chǔ)、Gradle核心思想、Gradle的Android插件、Android Jetpack架構(gòu)組件;(3)與跨平臺開發(fā)相關(guān)的知識點(diǎn),包括跨平臺技術(shù)演進(jìn)、Dart基礎(chǔ)、Flutter基礎(chǔ)。

作者簡介

  劉望舒,Android技術(shù)專家,Android進(jìn)階三部曲《Android進(jìn)階之光》 《Android進(jìn)階解密》 《Android進(jìn)階指北》作者,電子工業(yè)出版社博文視點(diǎn)2017、2018、2019年度優(yōu)秀作者。CSDN知名博主,榮獲CSDN 2018年度博客之星稱號。GDG Devfest、Droidcon、安卓巴士開發(fā)者大會、全球移動開發(fā)者大會的特邀演講嘉賓或出品人。曾在多個知名大廠任職,目前就職于某大型互聯(lián)網(wǎng)公司,擔(dān)任技術(shù)負(fù)責(zé)人,負(fù)責(zé)管理和架構(gòu)相關(guān)工作。

圖書目錄

目錄

Android進(jìn)階三部曲知識體系 1
第1章 系統(tǒng)源碼的下載、編譯、調(diào)試 5
1.1 使用VirtualBox安裝Ubuntu 5
1.1.1 安裝Ubuntu的步驟 6
1.1.2 安裝增強(qiáng)工具 12
1.2 AOSP源碼下載 14
1.2.1 AOSP簡介 14
1.2.2 下載repo 15
1.2.3 下載源碼 15
1.3 內(nèi)核源碼下載 16
1.4 系統(tǒng)源碼的整編和單編 18
1.4.1 編譯系統(tǒng)概述 18
1.4.2 編譯源碼的方式 20
1.4.3 準(zhǔn)備編譯環(huán)境 20
1.4.4 源碼整編 21
1.4.5 源碼單編 24
1.5 Source Insight導(dǎo)入系統(tǒng)源碼 25
1.5.1 新建源碼項目 25
1.5.2 定位文件 27
1.5.3 全局搜索 28
1.6 Android Studio導(dǎo)入系統(tǒng)源碼 29
1.7 Android Studio調(diào)試系統(tǒng)源碼 33
1.7.1 AOSP源碼項目調(diào)試 34
1.7.2 導(dǎo)入部分源碼調(diào)試 38
1.7.3 新建Android項目調(diào)試 39
1.8 本章小結(jié) 40
第2章 理解包管理機(jī)制和PMS 41
2.1 PackageInstaller的初始化 41
2.1.1 PackageManager簡介 42
2.1.2 APK的文件結(jié)構(gòu)和安裝方式 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 復(fù)制APK的處理 66
2.3.3 PMS處理APK安裝 70
2.3.4 PMS處理APK安裝的步驟 76
2.4 PMS的創(chuàng)建過程 77
2.4.1 SystemServer處理部分 77
2.4.2 PMS構(gòu)造方法 80
2.5 APK解析過程 91
2.5.1 引入PackageParser 91
2.5.2 PackageParser解析APK 92
2.5.3 Package的數(shù)據(jù)結(jié)構(gòu) 99
2.6 本章小結(jié) 100
第3章 理解輸入系統(tǒng)和IMS 102
3.1 輸入事件傳遞流程的組成部分 103
3.2 IMS的誕生 105
3.2.1 SystemServer處理部分 105
3.2.2 InputManagerService構(gòu)造方法 107
3.3 IMS的啟動過程 110
3.4 InputDispatcher的啟動過程 112
3.5 InputReader處理事件的過程 113
3.6 輸入事件的處理總結(jié) 119
3.7 InputReader的加工類型 120
3.8 InputDispatcher的分發(fā)過程 123
3.8.1 喚醒InputDispatcherThread 123
3.8.2 InputDispatcher進(jìn)行分發(fā) 124
3.9 事件分發(fā)到目標(biāo)窗口的過程 128
3.9.1 為事件尋找合適的分發(fā)目標(biāo) 128
3.9.2 處理點(diǎn)擊形式的事件 132
3.9.3 向目標(biāo)窗口發(fā)送事件 135
3.9.4 Motion事件分發(fā)過程總結(jié) 136
3.10 本章小結(jié) 138
第4章 IPC機(jī)制 139
4.1 Linux和Android的IPC機(jī)制 139
4.1.1 Linux中的IPC機(jī)制 139
4.1.2 Android中的IPC機(jī)制 141
4.2 開啟多進(jìn)程 142
4.2.1 開啟多進(jìn)程舉例 142
4.2.2 開啟多進(jìn)程引出的問題 144
4.3 用Messenger進(jìn)行進(jìn)程間通信 146
4.4 使用AIDL實(shí)現(xiàn)跨進(jìn)程方法調(diào)用 150
4.4.1 創(chuàng)建AIDL文件 150
4.4.2 創(chuàng)建服務(wù)端 152
4.4.3 客戶端調(diào)用 153
4.5 用ContentProvider進(jìn)行進(jìn)程間通信 155
4.5.1 建立數(shù)據(jù)庫,方便ContentProvider使用 155
4.5.2 使用ContentProvider對數(shù)據(jù)庫進(jìn)行操作 156
4.5.3 在Activity中調(diào)用另一個進(jìn)程的GameProvider方法 158
4.6 用Socket實(shí)現(xiàn)跨進(jìn)程聊天程序 160
4.7 本章小結(jié) 167
第5章 Native Binder原理 168
5.1 學(xué)習(xí)Binder的前置知識點(diǎn) 168
5.1.1 Linux和Binder的IPC通信原理 169
5.1.2 使用Binder的原因 173
5.1.3 學(xué)習(xí)Binder的原因 174
5.2 ServiceManager中的Binder機(jī)制 175
5.2.1 基于Binder通信的C/S架構(gòu) 175
5.2.2 MediaServer的main函數(shù) 176
5.2.3 每個進(jìn)程唯一的ProcessState實(shí)例 177
5.2.4 解析ServiceManager中的Binder機(jī)制 180
5.2.5 小結(jié) 187
5.3 系統(tǒng)服務(wù)的注冊過程 187
5.3.1 從調(diào)用鏈角度說明MediaPlayerService的注冊過程 187
5.3.2 從進(jìn)程角度說明MediaPlayerService的注冊過程 195
5.3.3 小結(jié) 196
5.4 ServiceManager的啟動過程 196
5.4.1 打開binder設(shè)備 198
5.4.2 注冊成為Binder機(jī)制的上下文管理者 201
5.4.3 循環(huán)等待和處理客戶端發(fā)來的請求 203
5.5 系統(tǒng)服務(wù)的獲取過程 206
5.5.1 客戶端MediaPlayerService請求獲取服務(wù) 206
5.5.2 服務(wù)端ServiceManager處理請求 212
5.6 本章小結(jié) 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中系統(tǒng)服務(wù)的注冊過程 225
6.2.1 將AMS注冊到ServiceManager 226
6.2.2 引出JavaBBinder 230
6.2.3 解析JavaBBinder 232
6.2.4 Java Binder架構(gòu) 234
6.3 本章小結(jié) 235
第7章 Groovy基礎(chǔ) 236
7.1 Groovy概述 236
7.2 Groovy編寫和調(diào)試 237
7.3 變量 237
7.4 方法 237
7.5 類 238
7.6 語句 239
7.6.1 斷言 239
7.6.2 for循環(huán) 239
7.6.3 switch語句 240
7.7 數(shù)據(jù)類型 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 本章小結(jié) 246
第8章 Gradle核心思想 247
8.1 Gradle概述 247
8.1.1 項目自動化 248
8.1.2 構(gòu)建工具 248
8.1.3 Gradle的特性 253
8.2 Gradle基礎(chǔ)知識 255
8.2.1 配置Gradle環(huán)境 255
8.2.2 實(shí)現(xiàn)Hello World 257
8.2.3 Gradle的任務(wù) 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 構(gòu)建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插件基礎(chǔ) 268
8.4.1 Gradle插件概述 268
8.4.2 應(yīng)用Gradle插件 270
8.4.3 插件DSL 272
8.4.4 自定義對象插件 273
8.4.5 Gradle插件的作用和優(yōu)點(diǎn) 274
8.5 自定義Gradle插件 274
8.5.1 在build.gradle中編寫 275
8.5.2 在buildSrc工程項目中編寫 277
8.5.3 在獨(dú)立項目中編寫 278
8.6 本章小結(jié) 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 本章小結(jié) 301
第10章 Android Jetpack架構(gòu)組件 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 在應(yīng)用中引入Jetpack相關(guān)組件 307
10.4 使用Lifecycle 307
10.4.1 為什么需要Lifecycle 307
10.4.2 如何使用Lifecycle 309
10.4.3 Lifecycle應(yīng)用舉例 312
10.4.4 自定義LifecycleOwner 315
10.5 Lifecycle的原理 316
10.5.1 Lifecycle的生命周期狀態(tài)事件和狀態(tài) 316
10.5.2 Lifecycle如何觀察Activity和Fragment的生命周期 317
10.5.3 Lifecycle關(guān)聯(lián)類 327
10.6 使用LiveData 328
10.6.1 什么是LiveData 328
10.6.2 LiveData的基本用法 329
10.6.3 更改LiveData中的數(shù)據(jù) 330
10.6.4 合并多個LiveData數(shù)據(jù)源 332
10.6.5 拓展LiveData對象 333
10.7 LiveData的原理 335
10.7.1 LiveData如何觀察組件生命周期變化 335
10.7.2 LiveData的observe方法回調(diào) 336
10.7.3 postValue/setValue方法分析 339
10.7.4 Transformations.map方法分析 341
10.7.5 LiveData關(guān)聯(lián)類 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 本章小結(jié) 351
第11章 跨平臺技術(shù)演進(jìn) 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 語言編譯轉(zhuǎn)換 357
11.4 原生渲染 358
11.4.1 React Native 358
11.4.2 Weex 358
11.4.3 快應(yīng)用 359
11.5 自繪UI 360
11.5.1 Qt 360
11.5.2 Flutter 361
11.6 本章小結(jié) 362
第12章 Dart基礎(chǔ) 363
12.1 Dart開發(fā)環(huán)境搭建 363
12.2 Dart概述 364
12.3 Dart的特性和重要概念 365
12.4 Dart關(guān)鍵字 366
12.5 變量 367
12.6 基本數(shù)據(jù)類型 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 函數(shù) 369
12.7.1 可選參數(shù) 370
12.7.2 默認(rèn)參數(shù)值 370
12.7.3 main函數(shù) 371
12.7.4 匿名函數(shù) 371
12.8 流程控制語句 371
12.8.1 for循環(huán) 372
12.8.2 switch和case 372
12.9 捕獲異常 373
12.10 為類添加新的功能 373
12.11 庫的使用方法 374
12.12 異步支持 375
12.13 使類可調(diào)用 376
12.14 創(chuàng)建實(shí)例 376
12.15 本章小結(jié) 376
第13章 Flutter基礎(chǔ) 377
13.1 Flutter開發(fā)環(huán)境搭建和Hello World 377
13.1.1 Flutter概述 378
13.1.2 Flutter開發(fā)環(huán)境搭建 378
13.1.3 運(yùn)行一個Flutter Demo 383
13.1.4 Hello World 385
13.2 Widget基礎(chǔ) 386
13.2.1 Widget概述 387
13.2.2 Widget的分類 387
13.2.3 Widget的狀態(tài)分類 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 手勢相關(guān)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 網(wǎng)絡(luò)請求庫Dio 440
13.9.1 Dio的使用入門 440
13.9.2 Dio訪問網(wǎng)絡(luò) 441
13.10 JSON數(shù)據(jù)解析 443
13.10.1 使用json.decode方法 443
13.10.2 手動編寫實(shí)體類 444
13.10.3 自動生成實(shí)體類 445
13.11 路由與數(shù)據(jù)傳遞 447
13.11.1 新建路由 447
13.11.2 使用注冊路由 450
13.11.3 路由間數(shù)據(jù)傳遞 451
13.12 Flutter與Android的相互通信 456
13.12.1 PlatformChannel概述 456
13.12.2 Flutter調(diào)用Android 458
13.12.3 Android調(diào)用Flutter 461
13.13 本章小結(jié) 465

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號