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

缺書
不接受訂購

出版日:1/1/2013
頁數:464
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787121193743
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為了讓讀者可以對Android系統進行“有血有肉”的感知,而不是停留在抽象的原理和概念之上,本書對Android的代碼進行了分析,進而“提煉”出Android的全貌。又因為Android有著海量代碼,故只分析了Android系統的一些主要模塊和類,不對各個細節進行全面分析,這樣可以在有限的篇幅中讓讀者了解Android的內部結構和運行機制,同時避免讓讀者陷入海量代碼的云霧中而不得要領。
由于Android系統升級較快,有些代碼變動很大。對設計上有重大改變的一些模塊,筆者也兼顧提及了Android的2.x版本和4.0版本中的設計,甚至個別模塊在未來的版本中的可能的演進方向。
現將本書各章內容介紹如下:
第1章介紹了智能指針。在Android的native層的C++代碼中,存在著大量形如sp和wp模板的運用,它們都是智能指針模板。通過本章,讀者將掌握native層的類的對象的生命周期。
第2章介紹了Android中消息隊列和線程處理機制。這涉及native層的Looper和Java層的Looper、Handler及Message等,讓讀者更好地理解Android中的代碼執行流程場景和所在的線程上下文。
第3章詳細介紹了Android中最重要的一種機制Binder IPC及其應用。在Android中,一個簡單的功能或上層API的一個簡單調用,往往需要跨越多個進程。一個子系統的功能也往往由各個進程中的模塊來完成,這就要用到Android的核心機制Binder IPC。Binder IPC不僅位于native代碼中,也大量存在于Java層的代碼中,因此以Java層的播放服務(IMediaPlaybackService)和電話狀態監聽器(PhoneStateListener)為例,詳細分析了多個進程之間的相互調用,尤其是后一個例子,雙向跨越了多個進程。另外,為了避免大內存數據傳輸,借助于Binder IPC機制,Android實現了大內存塊的跨進程共享。
第4章介紹了HAL硬件抽象層,讓讀者了解到Android的框架系統如何利用其下面的抽象硬件。
第5章介紹了Android的啟動過程。內容涉及Android初始化語言,Linux系統的第一個進程init的啟動過程,以及init進程如何解析用Android初始化語言編寫的.rc腳本文件。最后簡要介紹了Android系統中的服務所駐留的宿主進程system_server的啟動過程。
第6章介紹了Android輸入系統,讓讀者對輸入系統的執行過程有一定的了解。
第7章介紹了Android系統中的大容量存儲(MassStorage)系統,讓讀者熟悉Android存儲設備的管理機制。
第8章介紹了Android中的傳感器(Sensor)系統,讓讀者對傳感器有所了解。
第9章介紹了RIL,包括C語言實現的RIL和與其通信的RILJ(Java類RIL)。通過閱讀本章,讀者將了解Java層上傳消息和下送命令的機制,它是Java層的電話功能通道。
第10章介紹了Android系統中的phone進程。首先簡單介紹了層次狀態機,有助于讀者了解層次狀態機的工作機制,以便于分析使用層次狀態機的代碼,如PS域的數據連接、Wi-Fi和藍牙的連接狀態等。接著,對Android電話功能的實現進行了介紹。
第11章對Android中的Graphic系統進行了分析,其中包括SurfaceFlinger中新引入的VSync機制。
第12章介紹了Android中的OpenGL ES軟件層次棧,讓讀者了解OpenGL ES的層次調用關系,以及如何通過鉤子(hook)將庫中的API關聯起來。
第13章介紹了Android的多媒體系統,主要介紹了播放和錄制的過程。通過閱讀本章,讀者將了解Java的SDK API層如何調用native層的Service服務,以及Service如何向應用程序發送消息通知。最后,介紹了Android中的Camera。讓讀者了解硬件抽象層的Camera如何向Java層發送采樣數據。
第14章介紹了Audio系統的播放和錄音過程,讓讀者了解Android中的應用程序進程和AudioFlinger之間的數據傳輸關系。最后,介紹了AudioFlinger的工作機理、音效和音頻策略服務。通過閱讀本章,讀者將熟悉Android中的音頻系統的工作過程。
第15章介紹了Android的多媒體框架Stagefright,并提及Android版本演進過程中的不同設計理念下的視頻幀的渲染輸出原理。通過閱讀本章,讀者將進一步熟悉多媒體系統的處理過程。
第16章介紹了OMXCodec。這將有助于讀者了解Stagefright如何使用OMXCodec進行編解碼,以及OMXCodec如何使用平臺廠家實現的OMX插件。
第17章介紹了Android的GPS系統,讓讀者了解GPS部分的工作機制。
第18章介紹了Android中的NFC實現,讓讀者了解Android中的NFC的工作機制。
第19章介紹了Android對USB外設的處理過程。
第20章簡要介紹了Android中的藍牙和Wi-Fi的系統架構。
第21章介紹了用于生成tomestone調試文件的Debuggerd守護進程。通過閱讀本章,讀者將獲悉Android如何記錄C/C++代碼崩潰時的場景信息,以讓開發者獲取足夠多的調試信息。
為了表示對他人勞動成果的尊重和方便讀者進行延伸閱讀,本書在頁腳注釋中給出了筆者參閱的文章、文檔和書籍的網絡鏈接和說明。對于側重點不同的文章或書籍,筆者也給讀者做了閱讀推薦。
由于筆者時間、精力和能力所限,書中涉及的內容定會存在錯誤之處,還請相關專家及讀者批評批正,不勝感激。
在閱讀本書前,讀者需要具備C、C++、Java等編程語言和Android的基礎知識。讀者最好對Linux系統、Linux命令行和 Shell腳本等有基本了解。若讀者對設計模式、Linux系統編程(推薦伽瑪等的《設計模式--可復用面向對象軟件的基礎》,史蒂文斯和拉戈的《UNIX環境高級編程》)有所了解,再擁有書中相關子系統的背景知識,那么閱讀本書和理解Android系統將是件十分輕松的事。
內容簡介:

本書以Android Jelly Bean(4.1)的代碼為藍本,對Android的部分關鍵代碼進行了注釋分析,并輔以大量插圖,講述了Android大部分子系統中的模塊和類的靜態結構,讓讀者對Android系統的內部靜態結構有著“類”粒度這一層級上的認識和了解。同時,也對關鍵類和函數的代碼調用流程、運行時刻所位于的進程和線程上下文等動態運行場景進行了分析講述,讓讀者深刻理解Android系統內部是如何運行的。本書直接對Source Insight進行截圖,保留了代碼的原始行號、英文注釋等信息并進行了高亮顯示,方便讀者閱讀;代碼中同時添加了作者所做的中文注釋說明。

目錄:

第1章 智能指針 1
1.1 智能指針概述 1
1.2 引用計數基類RefBase 2
1.3 輕量級引用計數LightRefBase 3
1.4 強指針 3
1.4.1 強指針變量的初始化與生命周期 3
1.4.2 賦值操作與引用計數變化 5
1.5 弱指針 5
第2章 消息隊列與線程處理 7
2.1 消息隊列處理模型的設計 7
2.2 消息隊列與線程處理的Java實現 9
2.2.1 Thread/Runnable 9
2.2.2 Message 10
2.2.3 MessageQueue概述 11
2.2.4 Handler 11
2.2.5 Looper 12
2.2.6 再論Handler 15
2.2.7 對同步消息的支持 16
2.3 native層的Looper與消息隊列處理 19
2.3.1 Looper中的睡眠等待與喚醒機制 19
2.3.2 Looper對文件描述符的監控與處理 22
2.3.3 Looper中的消息隊列處理機制 25
2.3.4 Looper與線程執行上下文 27
第3章 Binder IPC及其應用 29
3.1 Binder IPC 29
3.1.1 Binder IPC與系統服務 29
3.1.2 Binder類結構與調用關系 31
3.1.3 模板函數interface_cast的背后 33
3.1.4 例子AudioPolicyService 37
3.2 Java層對Binder的封裝 40
3.2.1 例子IMediaPlaybackService 42
3.2.2 例子PhoneStateListener 47
3.3 大內存塊的跨進程共享 52
3.3.1 概述 52
3.3.2 調用接口 53
3.3.3 設備空間的映射 55
3.3.4 Server側的處理 57
第4章 HAL硬件抽象層 59
4.1 HAL概述 59
4.2 硬件模塊庫的通用寫法 60
4.3 硬件模塊庫的裝載與解析 63
4.4 例子Lights 65
4.5 例子Camera 68
4.6 例子Power和Vibrator 69
第5章 Android的啟動過程 71
5.1 Android初始化語言及解析 71
5.1.1 Action 71
5.1.2 觸發器trigger 72
5.1.3 命令Command 72
5.1.4 服務Service 74
5.1.5 .rc文件的解析 76
5.2 BootChart 82
5.3 ueventd守護進程 82
5.4 init進程的啟動過程 87
5.5 init.rc文件中的服務進程 93
5.6 system_server進程 95
5.6.1 app_process程序 95
5.6.2 system_server進程 96
第6章 輸入系統 99
6.1 輸入系統概述 99
6.2 讀線程 101
6.2.1 EventHub 101
6.2.2 InputReader 106
6.2.3 InputDevice 108
6.2.4 InputMapper 108
6.2.5 QueuedInputListener 111
6.3 分發線程 112
6.3.1 InputDispatcher 112
6.3.2 InputChannel 116
6.4 輸入系統的開啟 118
第7章 MassStorage 121
7.1 MassStorage概述 121
7.2 MountService 122
7.3 庫libsysutils.so 123
7.3.1 SocketListener 123
7.3.2 FrameworkListener 126
7.3.3 NetlinkListener 127
7.4 守護進程vold 128
7.4.1 NetlinkManager 128
7.4.2 CommandListener 131
7.4.3 vold的main函數 135
第8章 Sensor 137
8.1 Sensor概述 137
8.2 SDK API概述 138
8.3 Sensor管理器 139
8.3.1 Sensor采樣數據的獲取與處理 141
8.3.2 SensorEventQueue 146
8.4 SensorService 147
8.4.1 邏輯傳感器 149
8.4.2 物理傳感器 150
8.4.3 Sensor HAL 150
第9章 RIL 153
9.1 RIL概述 153
9.2 rild守護進程 154
9.3 事件處理與分發線程 158
9.3.1 分發線程中的事件處理 158
9.3.2 RIL請求的接收與處理 161
9.3.3 RIL響應的回送 165
9.4 radiooptions工具程序 169
9.5 RILJ 169
9.5.1 RILJ概述 169
9.5.2 RILRequest的發送過程 171
9.5.3 Response的處理過程 174
第10章 com.android.phone進程 178
10.1 層次狀態機StateMachine 178
10.2 GSMPhone 179
10.3 GsmCallTracker 184
10.3.1 GsmDataConnectionTracker 186
10.3.2 GsmServiceStateTracker 188
10.3.3 DefaultPhoneNotifier 188
10.3.4 其他 189
10.4 進程com.android.phone 190
第11章 Graphic 196
11.1 Graphic概述 196
11.2 Java層簡介 197
11.2.1 SurfaceSession 198
11.2.2 Surface 198
11.2.3 SurfaceView 199
11.2.4 TextureView 200
11.3 JNI層簡介 200
11.4 SKIA庫簡介 201
11.5 庫libgui.so 202
11.5.1 概述 202
11.5.2 ComposerService 204
11.5.3 共享控制塊surface_flinger_cblk_t 204
11.5.4 ISurfaceComposer 205
11.5.5 ScreenshotClient 207
11.5.6 SurfaceComposerClient 207
11.5.7 Surface 210
11.5.8 SurfaceControl 211
11.5.9 繪圖操作的前后過程 213
11.5.10 SurfaceTexture Client 215
11.6 SurfaceFlinger進程 222
11.6.1 圖層 223
11.6.2 DisplayHardware簡介 228
11.6.3 HWComposer簡介 228
11.6.4 VSync 229
11.7 庫libui.so簡介 247
11.7.1 GraphicBuffer 247
11.7.2 FramebufferNativeWindow 248
11.8 RenderScript簡介 249
第12章 OpenGL ES軟件層次棧 250
12.1 Android中的OpenGL ES簡介 250
12.2 Android中OpenGL軟件層次棧 251
12.3 包裹庫與hook鉤子 253
12.3.1 libGLESv1_CM.so包裹庫 253
12.3.2 libGLESv2包裹庫 257
12.3.3 libEGL包裹庫 257
12.3.4 結構體egl_t和gl_hooks_t鉤子 258
12.4 OpenGL實現庫的加載和解析 260
12.4.1 加載和解析的發起 260
12.4.2 庫裝載器Loader 261
12.5 libGLES_android庫和ETC1簡介 265
第13章 Multimedia 267
13.1 Multimedia概述 267
13.2 API類簡述 268
13.3 多媒體播放(playback) 270
13.3.1 播放流程 273
13.3.2 來自server側的消息事件通知 277
13.4 多媒體錄制(Recording) 279
13.5 元數據(MetaData)獲取 281
13.6 Camera 284
13.6.1 Camera概述 284
13.6.2 CameraHardwareInterface與HAL層 287
13.7 Camera事件通知機制 289
第14章 Audio 293
14.1 Audio概述 293
14.2 Audio播放AudioTrack 295
14.2.1 共享控制塊audio_track_cblk_t 296
14.2.2 數據的寫入 298
14.2.3 事件的回送及處理 299
14.3 Auido錄音Recording 301
14.3.1 錄音的開始過程 303
14.3.2 錄音的停止過程 306
14.4 AudioFlinger 307
14.4.1 AudioFlinger概述 307
14.4.2 Track相關類概述 308
14.4.3 AudioFlinger中的線程 311
14.5 音效AudioEffect 319
14.5.1 EffectHandle 320
14.5.2 音效引擎的封裝EffectModule 320
14.5.3 音效鏈EffectChain 321
14.5.4 音效處理引擎接口effect_interface_s 322
14.5.5 音效引擎庫audio_effect_library_s 323
14.5.6 音效引擎工廠EffectFactory 324
14.6 音頻策略服務AudioPolicyService 326
第15章 Stagefright 331
15.1 Stagefright概述 331
15.2 節點子類 332
15.3 StagefrightPlayer 334
15.4 視頻幀的渲染輸出AwesomeRenderer 343
15.4.1 Renderer的創建 344
15.4.2 AwesomeLocalRenderer 345
15.4.3 AwesomeNativeWindowRenderer 347
15.5 AudioPlayer 347
15.6 A/V同步簡介 350
15.7 StagefrightRecorder 351
第16章 OMXCodec 356
16.1 OpenMAX概述 356
16.1.1 組件(Component)與端口(Port) 357
16.1.2 組件的初始化 358
16.1.3 數據處理 359
16.1.4 組件命令OMX_Command 360
16.2 OMXCodec類 362
16.2.1 組件的創建 362
16.2.2 緩沖區的分配 364
16.2.3 數據處理流程 370
16.3 IOMX 374
16.4 OMX插件 376
16.4.1 平臺廠家插件 377
16.4.2 軟件OMX插件SoftOMXPlugin 379
16.5 組件消息的上報 383
第17章 GPS 386
17.1 GPS 簡述 386
17.2 SDK API概述 386
17.3 LocationManagerService 388
17.4 GpsLocationProvider 390
17.4.1 初始化代碼分析 391
17.4.2 消息處理與回調結構體 392
17.4.3 例子:位置信息的上報 394
17.5 HAL層簡介 396
17.5.1 GPS的位置信息 396
17.5.2 GPS衛星信息 397
17.5.3 GPS回調函數 397
第18章 NFC 399
18.1 NFC概述 399
18.2 SDK API概述 400
18.2.1 NfcAdapter 401
18.2.2 NdefMessage 401
18.2.3 NFC Tag 402
18.2.4 NFC-extras 403
18.3 進程com.android.nfc 403
18.3.1 P2pEventManager 403
18.3.2 P2pLinkManager 405
18.3.3 Bluetooth Handover 408
18.3.4 SNEP 409
18.3.5 NDEF Push 413
18.3.6 其他類簡介 414
18.4 JNI層 415
第19章 USB 418
19.1 SDK API概述 418
19.2 UsbService 420
19.2.1 UsbDeviceManager 421
19.2.2 UsbHostManager 422
19.3 uevent 424
第20章 Bluetooth和Wi-Fi簡析 429
20.1 Bluetooth 429
20.1.1 Bluetooth概述 429
20.1.2 SDK API概述 430
20.1.3 Bluetooth服務 432
20.1.4 JNI層 433
20.2 Wi-Fi 436
20.2.1 Wi-Fi概述 436
20.2.2 SDK API概述 436
20.2.3 JNI和HAL層 439
20.2.4 WPA_supplicant 440
第21章 Debuggerd 441
21.1 預備知識 441
21.1.1 ptrace調用 441
21.1.2 waitpid 442
21.2 debuggerd守護進程 442
后記 450
序: