-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Android進階指北

( 簡體 字)
作者:劉望舒類別:1. -> 程式設計 -> 手機程式 -> Android
譯者:
出版社:電子工業出版社Android進階指北 3dWoo書號: 53354
詢問書籍請說出此書號!

缺書
NT售價: 545

出版日:9/1/2020
頁數:484
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121393754
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為什么寫這本書
Android進階三部曲包括《Android進階之光》、《Android進階解密》和《Android進階指北》,寫這本書的原因和前兩本書有些關聯,主要有以下幾點:
(1)我一直想建立一個知識體系,但是《Android進階之光》和《Android進階解密》不能形成具有一定規模的知識體系,而本書的出版將會打破這一點,三本書初步形成了知識體系,即Android進階三部曲知識體系。
(2)目前市面上的關于Android系統源碼分析的書大多不是專門為應用開發編寫的,而本書中的系統源碼分析是專門為應用開發編寫的。
(3)目前市面上的關于Android應用綜合類進階的圖書很少,2017年有《Android進階之光》,2019年有《Android進階解密》,2020年我仍要貢獻出自己的力量。
(4)目前市面上的關于Android源碼分析類的圖書大多基于Android 6.0之前的版本,需要有一本書來對更新版本的系統源碼進行分析。
(5)《Android進階之光》和《Android進階解密》覆蓋的知識點還遠遠不夠,我希望這本書能覆蓋更多的知識點,讓更多的人受益。
本書內容
本書共分13章,各章內容簡介如下。
?第1章介紹系統源碼的下載、編譯、調試,帶領讀者走進Android系統源碼的世界。
?第2章介紹包管理機制和PMS,PMS是Android應用進階所需要了解的三大MS(Manage Service,管理服務)之一,三大MS分別為AMS、WMS和PMS。
?第3章介紹輸入系統和IMS,IMS是除三大MS之外,應用開發人員所需要掌握的知識。
?第4章介紹IPC機制,為講解Binder原理進行鋪墊。
?第5章介紹Native Binder原理,掌握這一章的內容可以深入理解Java Binder原理。
?第6章介紹Java Binder原理,包括Binder類的注冊、JavaBBinder原理、Java Binder架構。
?第7章介紹Groovy基礎,為講解Gradle進行鋪墊。
?第8章介紹Gradle核心思想,為講解Gradle的Android插件進行鋪墊。
?第9章結合第7章和第8章的內容,講解Gradle的Android插件。
?第10章介紹Android Jetpack架構組件,包括Lifecycle、LiveData、ViewModel的使用方法和原理。
?第11章介紹跨平臺技術演進。
?第12章介紹Dart基礎,為講解Flutter基礎進行鋪墊。
?第13章介紹Flutter基礎。
本書特色
(1)Android進階三部曲是目前市面上少有的成知識體系的源碼分析類圖書。
(2)本書的知識點自成體系并且環環相扣,但每一章節都或多或少與本書或者系列圖書的其他章節有所關聯。
(3)本書中的Android系統源碼分析都是針對應用開發來編寫的。
(4)本書是目前市面上少有的介紹Android新技術的圖書。
讀者對象
作為Android進階三部曲的第三部,本書的深度要深于《Android進階之光》,本書適合以下讀者閱讀。
?有一定基礎的Android應用開發工程師。
?對Android系統源碼感興趣的讀者。
致謝
感謝本書的責任編輯付睿,她在CSDN博客上發現了我,并積極推動本書的出版進度,使得本書能夠及時出版。感謝所有關注我的朋友們,你們的鼓勵和認可為我寫書及寫博客帶來了動力。
勘誤與互動
本人雖已竭盡全力,但書中難免存在不足之處,歡迎大家向我反饋,我也會在獨立博客和CSDN博客中定期發布本書的勘誤信息。
內容簡介:

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

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
序: