-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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書號: 50175
詢問書籍請說出此書號!

缺書
NT售價: 495

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

譯者序:

前言:

為什么寫這本書
Android進階二部曲包括《Android進階之光》和本書,因此寫這本書的原因和《Android進階之光》有些關聯,主要有以下幾點:
(1)《Android進階之光》適合初、中級工程師閱讀,因此我需要寫一本適合中、高級工程師閱讀的進階書。
(2)目前市場上的系統源碼分析的書大部分不是專門為應用開發編寫的,因此我要專門為Android應用開發編寫一本系統源碼分析的書,不僅如此,我還要將系統源碼和應用開發相結合。
(3)目前Android應用綜合類進階書籍很少,在2017年出版的只有《Android進階之光》,在2018年我仍要貢獻出自己的力量。
(4)目前市面上的源碼分析類書籍大部分是基于Android 6.0以前版本的,需要有一本書籍來對更新版本的系統源碼進行分析。
(5)《Android進階之光》覆蓋的知識點還遠遠不夠,我希望能覆蓋更多的知識點,讓更多的人受益。
本書內容
本書共分為17章,各章內容如下:
? 第1章介紹Android系統架構、系統源碼目錄和如何閱讀源碼,帶領大家走進Android系統源碼的世界。
? 第2章介紹Android系統啟動過程,為下面的章節做好鋪墊。
? 第3章介紹應用程序進程啟動過程。
? 第4章介紹四大組件的工作過程,包括根Activity的啟動過程,Service的啟動和綁定過程,廣播的注冊、發送和接收過程,Content Provider的啟動過程。
? 第5章從源碼角度分析上下文Context。
? 第6章介紹ActivityManagerService,包括AMS家族、AMS的啟動過程、AMS重要的數據結構和Activity棧管理等內容。
? 第7章介紹WindowManager,包括WindowManager的關聯類、Window的屬性和Window的操作等內容。
? 第8章介紹WindowManagerService,包括WMS的創建過程、WMS的重要成員和Window的添加過程等內容。
? 第9章結合MediaRecorder框架來介紹JNI的原理。
? 第10章介紹Android開發所需要了解的Java虛擬機知識。
? 第11章介紹Dalvik和ART虛擬機。
? 第12章介紹ClassLoader,它是理解熱修復原理和插件化原理必備的知識點。
? 第13章介紹熱修復原理,包括熱修復框架的對比、資源修復、代碼修復和動態鏈接庫的修復。
? 第14章介紹Hook技術,為講解插件化原理做鋪墊。
? 第15章介紹插件化原理,包括插件化的產生、四大組件的插件化、資源的插件化和so的插件化。
? 第16章介紹繪制優化,包括繪制性能分析和布局優化。
? 第17章介紹內存優化,從避免內存泄漏開始講起,然后介紹常用的內存分析工具Memory Monitor、Allocation Tracker和Heap Dump,最后介紹分析內存泄漏的利器MAT和LeakCanary。
本書特色
本書主要有以下特點:
? 本書的知識點自成體系并且環環相扣,每一個章節都或多或少地與其他章節有所關聯。
? 本書是目前市面上少有的專門為Android應用開發者所編寫的源碼分析類書籍,并且將系統源碼和應用開發相結合。
? 本書是目前市面上少有的講解插件化和熱修復原理的書。
? 本書為了更好地講解知識點,會先介紹一些知識點做鋪墊,比如要學習插件化原理,就需要先學習四大組件工作過程、AMS、ClassLoader和Hook技術等相關知識點。
讀者對象
本書適合以下讀者閱讀:
? 有一定基礎的Android應用開發工程師。
? Android系統開發工程師。
? 對Android系統源碼感興趣的讀者。
致謝
感謝本書的策劃編輯付睿,她在CSDN博客中發現了我,并積極推動本書的出版進度,才使得本書能夠及時出版。感謝我的父母以及所有關注我的朋友們,你們的鼓勵和認可為我寫書以及寫博客帶來了源源不斷的動力。
勘誤與互動
本人雖已竭盡全力,但書中難免會有錯誤,歡迎大家向我反饋,我也會在獨立博客和CSDN博客中定期發布本書的勘誤信息。

劉望舒
2018年6月于北京
內容簡介:

本書是一本Android進階書籍,主要針對Android 8.0系統源碼并結合應用開發相關知識進行介紹。本書共分為17章,從3個方面來組織內容。第一方面介紹Android應用開發所需要掌握的系統源碼知識,第二方面介紹JNI、ClassLoader、Java虛擬機、DVM&ART虛擬機和Hook等技術,第三方面介紹熱修復原理、插件化原理、繪制優化和內存優化等與應用開發相關的知識點。3個方面有所關聯并形成一個知識體系,從而使Android開發者能通過閱讀本書達到融會貫通的目的。本書適合有一定基礎的Android應用開發工程師、Android系統開發工程師和對Android系統源碼感興趣的讀者閱讀。
目錄:

第1章 Android系統架構 1
1.1 Android系統架構 1
1.2 Android系統源碼目錄 4
1.2.1 整體結構 4
1.2.2 應用層部分 5
1.2.3 應用框架層部分 6
1.2.4 C/C++程序庫部分 6
1.3 源碼閱讀 7
1.3.1 在線閱讀 7
1.3.2 使用Source Insight 9
1.4 本章小結 12
第2章 Android系統啟動 13
2.1 init進程啟動過程 13
2.1.1 引入init進程 13
2.1.2 init進程的入口函數 14
2.1.3 解析init.rc 17
2.1.4 解析Service類型語句 19
2.1.5 init啟動Zygote 20
2.1.6 屬性服務 23
2.1.7 init進程啟動總結 27
2.2 Zygote進程啟動過程 27
2.2.1 Zygote概述 28
2.2.2 Zygote啟動腳本 28
2.2.3 Zygote進程啟動過程介紹 30
2.2.4 Zygote進程啟動總結 38
2.3 SystemServer處理過程 39
2.3.1 Zygote處理SystemServer進程 39
2.3.2 解析SystemServer進程 44
2.3.3 SystemServer進程總結 48
2.4 Launcher啟動過程 48
2.4.1 Launcher概述 48
2.4.2 Launcher啟動過程介紹 49
2.4.3 Launcher中應用圖標顯示過程 54
2.5 Android系統啟動流程 59
2.6 本章小結 60
第3章 應用程序進程啟動過程 61
3.1 應用程序進程簡介 61
3.2 應用程序進程啟動過程介紹 62
3.2.1 AMS發送啟動應用程序進程請求 62
3.2.2 Zygote接收請求并創建應用程序進程 68
3.3 Binder線程池啟動過程 75
3.4 消息循環創建過程 78
3.5 本章小結 80
第4章 四大組件的工作過程 81
4.1 根Activity的啟動過程 82
4.1.1 Launcher請求AMS過程 82
4.1.2 AMS到ApplicationThread的調用過程 85
4.1.3 ActivityThread啟動Activity的過程 94
4.1.4 根Activity啟動過程中涉及的進程 99
4.2 Service的啟動過程 101
4.2.1 ContextImpl到AMS的調用過程 101
4.2.2 ActivityThread啟動Service 103
4.3 Service的綁定過程 110
4.3.1 ContextImpl到AMS的調用過程 111
4.3.2 Service的綁定過程 112
4.4 廣播的注冊、發送和接收過程 122
4.4.1 廣播的注冊過程 122
4.4.2 廣播的發送和接收過程 127
4.5 Content Provider的啟動過程 137
4.5.1 query方法到AMS的調用過程 137
4.5.2 AMS啟動Content Provider的過程 143
4.6 本章小結 148
第5章 理解上下文Context 149
5.1 Context的關聯類 149
5.2 Application Context的創建過程 151
5.3 Application Context的獲取過程 156
5.4 Activity的Context創建過程 156
5.5 Service的Context創建過程 161
5.6 本章小結 163
第6章 理解ActivityManagerService 164
6.1 AMS家族 164
6.1.1 Android 7.0的AMS家族 164
6.1.2 Android 8.0的AMS家族 170
6.2 AMS的啟動過程 171
6.3 AMS與應用程序進程 174
6.4 AMS重要的數據結構 176
6.4.1 解析ActivityRecord 177
6.4.2 解析TaskRecord 177
6.4.3 解析ActivityStack 178
6.5 Activity棧管理 181
6.5.1 Activity任務棧模型 181
6.5.2 Launch Mode 182
6.5.3 Intent的FLAG 182
6.5.4 taskAffinity 185
6.6 本章小結 186
第7章 理解WindowManager 187
7.1 Window、WindowManager和WMS 187
7.2 WindowManager的關聯類 188
7.3 Window的屬性 193
7.3.1 Window的類型和顯示次序 193
7.3.2 Window的標志 195
7.3.3 軟鍵盤相關模式 196
7.4 Window的操作 196
7.4.1 系統窗口的添加過程 197
7.4.2 Activity的添加過程 202
7.4.3 Window的更新過程 203
7.5 本章小結 206
第8章 理解WindowManagerService 207
8.1 WMS的職責 207
8.2 WMS的創建過程 209
8.3 WMS的重要成員 217
8.4 Window的添加過程(WMS處理部分) 219
8.5 Window的刪除過程 225
8.6 本章小結 230
第9章 JNI原理 231
9.1 系統源碼中的JNI 232
9.2 MediaRecorder框架中的JNI 233
9.2.1 Java Framework層的MediaRecorder 233
9.2.2 JNI層的MediaRecorder 234
9.2.3 Native方法注冊 235
9.3 數據類型的轉換 239
9.3.1 基本數據類型的轉換 240
9.3.2 引用數據類型的轉換 240
9.4 方法簽名 242
9.5 解析JNIEnv 244
9.5.1 jfieldID和jmethodID 245
9.5.2 使用jfieldID和jmethodID 247
9.6 引用類型 249
9.6.1 本地引用 249
9.6.2 全局引用 249
9.6.3 弱全局引用 250
9.7 本章小結 251
第10章 Java虛擬機 252
10.1 概述 252
10.1.1 Java虛擬機家族 253
10.1.2 Java虛擬機執行流程 253
10.2 Java虛擬機結構 254
10.2.1 Class文件格式 255
10.2.2 類的生命周期 256
10.2.3 類加載子系統 257
10.2.4 運行時數據區域 258
10.3 對象的創建 260
10.4 對象的堆內存布局 262
10.5 oop-klass模型 263
10.6 垃圾標記算法 266
10.6.1 Java中的引用 266
10.6.2 引用計數算法 267
10.6.3 根搜索算法 269
10.7 Java對象在虛擬機中的生命周期 270
10.8 垃圾收集算法 271
10.8.1 標記—清除算法 271
10.8.2 復制算法 272
10.8.3 標記—壓縮算法 273
10.8.4 分代收集算法 274
10.9 本章小結 275
第11章 Dalvik和ART 276
11.1 Dalvik虛擬機 276
11.1.1 DVM與JVM的區別 276
11.1.2 DVM架構 278
11.1.3 DVM的運行時堆 280
11.1.4 DVM的GC日志 280
11.2 ART虛擬機 281
11.2.1 ART與DVM的區別 281
11.2.2 ART的運行時堆 282
11.2.3 ART的GC日志 283
11.3 DVM和ART的誕生 285
11.4 本章小結 288
第12章 理解ClassLoader 289
12.1 Java中的ClassLoader 289
12.1.1 ClassLoader的類型 289
12.1.2 ClassLoader的繼承關系 291
12.1.3 雙親委托模式 292
12.1.4 自定義ClassLoader 295
12.2 Android中的ClassLoader 298
12.2.1 ClassLoader的類型 298
12.2.2 ClassLoader的繼承關系 300
12.2.3 ClassLoader的加載過程 302
12.2.4 BootClassLoader的創建 306
12.2.5 PathClassLoader的創建 309
12.3 本章小結 311
第13章 熱修復原理 312
13.1 熱修復的產生 312
13.2 熱修復框架的種類和對比 313
13.3 資源修復 314
13.3.1 Instant Run概述 314
13.3.2 Instant Run的資源修復 315
13.4 代碼修復 318
13.4.1 類加載方案 319
13.4.2 底層替換方案 321
13.4.3 Instant Run方案 322
13.5 動態鏈接庫的修復 323
13.5.1 System的load和loadLibarary方法 323
13.5.2 nativeLoad方法分析 327
13.6 本章小結 333
第14章 Hook技術 334
14.1 Hook技術概述 334
14.2 Hook技術分類 336
14.3 代理模式 336
14.3.1 代理模式簡單實現 337
14.3.2 動態代理的簡單實現 338
14.4 Hook startActivity方法 339
14.4.1 Hook Activity的startActivity方法 340
14.4.2 Hook Context的startActivity方法 343
14.4.3 Hook startActivity總結 344
14.5 本章小結 345
第15章 插件化原理 346
15.1 動態加載技術 346
15.2 插件化的產生 347
15.2.1 應用開發的痛點和瓶頸 347
15.2.2 插件化思想 348
15.2.3 插件化定義 350
15.3 插件化框架對比 351
15.4 Activity插件化 352
15.4.1 Activity的啟動過程回顧 352
15.4.2 Hook IActivityManager方案實現 354
15.4.3 Hook Instrumentation方案實現 364
15.4.4 總結 367
15.5 Service插件化 368
15.5.1 插件化方面Service與Activity的不同 368
15.5.2 代理分發實現 370
15.6 ContentProvider插件化 376
15.6.1 ContentProvider的啟動過程回顧 376
15.6.2 VirtualApk的實現 377
15.7 BroadcastReceiver的插件化 385
15.7.1 廣播插件化思路 386
15.7.2 VirtualApk的實現 386
15.8 資源的插件化 387
15.8.1 系統資源加載 387
15.8.2 VirtualApk實現 389
15.9 so的插件化 390
15.10 本章小結 393
第16章 繪制優化 394
16.1 繪制性能分析 394
16.1.1 繪制原理 395
16.1.2 Profile GPU Rendering 396
16.1.3 Systrace 398
16.1.4 Traceview 404
16.2 布局優化 407
16.2.1 布局優化工具 407
16.2.2 布局優化方法 411
16.2.3 避免GPU過度繪制 419
16.3 本章小結 420
第17章 內存優化 421
17.1 避免可控的內存泄漏 421
17.1.1 什么是內存泄漏 421
17.1.2 內存泄漏的場景 422
17.2 Memory Monitor 428
17.2.1 使用Memory Monitor 429
17.2.2 大內存申請與GC 430
17.2.3 內存抖動 430
17.3 Allocation Tracker 430
17.3.1 使用Allocation Tracker 431
17.3.2 alloc文件分析 431
17.4 Heap Dump 434
17.4.1 使用Heap Dump 434
17.4.2 檢測內存泄漏 436
17.5 內存分析工具MAT 438
17.5.1 生成hprof文件 438
17.5.2 MAT分析hprof文件 440
17.6 LeakCanary 448
17.6.1 使用LeakCanary 449
17.6.2 LeakCanary應用舉例 449
17.7 本章小結 453
序: