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

缺書
NT售價: 645

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

譯者序:

前言:

Android系統自2008年9月發布第一個版本1.0以來,截至2015年9月發布最新版本6.0,一共存在十多個版本。本書2012年10月發布第一版時,選擇了Android 2.3的源代碼來分析Android系統的實現,主要是因為就當時而言,它的基礎架構是最穩定的,而且也是使用最廣泛的。
本書的特點是通過情景分析來分析Android源碼,目標是讓讀者閱讀了本書之后,能夠自已去閱讀和分析Android源碼。自第一版發布以來,本書經歷了6次復印,得到了讀者的熱烈反饋和建議。基于這些反饋和建議,本應根據Android最新發布版本6.0對本書進行升級,但是思慮再三,我們還是選擇了原來的Android 2.3來修訂本書,原因如下所示:
1. Android版本更新很快。即使根據當前的最新發布版本更新本書,等到本書發布時,內容也會落后最新發布版本的一到兩個版本左右。
2. 本書涉及到的內容都是Android系統的核心基礎架構。這些內容在后來的版本中,都是靈魂般地穩定存在。例如,智能指針、HAL、Binder IPC和四大組件管理等。
3. 技術發展日新月異,但是萬變不離其宗。掌握了本書的內容,可以更好地學習和理解Android系統的其它模塊。筆者就是在本書內容的基礎上對UI系統、Dalvik虛擬機、構建系統、SEAndroid安全機制、ART虛擬機和Chromium瀏覽器進行研究的,起到的效果是事半功倍的。
基于上述原因,我們根據讀者的52個反饋和建議,重新修訂了本書,希望本書能夠繼續有志于深入研究Android的讀者服務。同時也非常讀者的反饋和建議,你們的支持是筆者持續研究和分享Android系統技術的動力所在。由于提供反饋和建議的讀者眾多,這里不能一一列出,具體可以參考上述反饋和建議鏈接,筆者由衷地感謝!

本書內容
全書分為初識Android系統篇、Android專用驅動系統篇和Android應用程序框架篇三個部分。
初識Android系統篇包含三個章節的內容,主要介紹Android系統的基礎知識。第1章介紹與Android系統有關的參考書籍,以及Android源代碼工程環境的搭建方法;第2章介紹Android系統的硬件抽象層;第3章介紹Android系統的智能指針。讀者可能會覺得奇怪,為什么一開始就介紹Android系統的硬件抽象層呢?因為涉及硬件,它似乎是一個深奧的知識點。其實不然,Android系統的硬件抽象層無論是從實現上,還是從使用上,它的層次都是非常清晰的,而且從下到上涵蓋了整個Android系統,包括Android系統在用戶空間和內核空間的實現。內核空間主要涉及硬件驅動程序的編寫方法,而用戶空間涉及運行時庫層、應用程序框架層及應用程序層。因此,盡早學習Android系統的硬件抽象層,有助于我們從整體上去認識Android系統,以便后面可以更好地分析它的源代碼。在分析Android系統源代碼的過程中,經常會碰到智能指針,第3章我們就重點分析Android系統智能指針的實現原理,也是為了后面可以更好地分析Android系統源代碼。
Android專用驅動系統篇包含三個章節的內容。我們知道,Android系統是基于Linux內核來開發的,但是由于移動設備的CPU和內存配置都要比PC低,因此,Android系統并不是完全在Linux內核上開發的,而是在Linux內核里面添加了一些專用的驅動模塊來使它更適合于移動設備。這些專用的驅動模塊同時也形成了Android系統的堅實基礎,尤其是Logger日志驅動程序、Binder進程間通信驅動程序,以及Ashmem匿名共享內存驅動程序,它們在Android系統中被廣泛地使用。在此篇中,我們分別在第4章、第5章和第6章分析Logger日志系統、Binder進程間通信系統和Ashmem共享內存系統的實現原理,為后面深入分析Android應用程序的框架打下良好的基礎。
Android應用程序框架篇包含十個章節的內容。我們知道,在移動平臺中,Android系統和iOS系統比的是誰的應用程序更豐富、質量更高、用戶體驗更好, 誰就能取得最終的勝利。因此,每個平臺都在盡最大努力吸引第三方開發者來為其開發應用程序。這就要求平臺必須提供良好的應用程序架構,以便第三方開發者可以將更多的精力集中在應用程序的業務邏輯上,從而開發出數量更多、質量更高和用戶體驗更好的應用程序。在此篇中,我們將從組件、進程、消息和安裝四個維度來分析Android應用程序的實現框架。第7章到第10章分析Android應用程序四大組件Activity、Service、Broadcast Receiver和Content Provider的實現原理;第11章和第12章分析Android應用程序進程的啟動過程;第13章到第15章分析Android應用程序的消息處理機制;第16章分析Android應用程序的安裝和顯示過程。學習了這些知識之后,我們就可以掌握Android系統的精髓了。

本書特點
本書從初學者的角度出發,結合具體的使用情景,在縱向和橫向上對Android系統的源代碼進行了全面、深入、細致的分析。在縱向上,采用從下到上的方式,分析的源代碼涉及了Android系統的內核層(Linux Kernel)、硬件抽象層(HAL)、運行時庫層(Runtime)、應用程序框架層(Application Framework)以及應用程序層(Application),這有利于讀者從整體上掌握Android系統的架構。在橫向上,從Android應用程序的組件、進程、消息以及安裝四個角度出發,全面地剖析Android系統的應用程序框架層,這有利于讀者深入地理解Android應用程序的架構以及運行原理。
內容簡介:

(含CD光盤1張)
在內容上,本書結合使用情景,全面、深入、細致地分析了Android系統的源代碼,涉及到Linux內核層、硬件抽 象層(HAL)、運行時庫層(Runtime)、應用程序框架層(Application Framework)以及應用程序層(Application)。 在組織上,本書將上述內容劃分為初識Android系統、Android專用驅動系統和Android應用程序框架三大篇。初識 Android系統篇介紹了參考書籍、基礎知識以及實驗環境搭建;Android專用驅動系統篇介紹了Logger日志驅動程序、 Binder進程間通信驅動程序以及Ashmem匿名共享內存驅動程序;Android應用程序框架篇從組件、進程、消息以及安裝 四個維度對Android應用程序的框架進行了深入的剖析。 通過上述內容及其組織,本書能使讀者既能從整體上把握Android系統的層次結構,又能從細節上掌握每一個層次 的要點。

目錄:

第1篇 初識Android系統
第1章 準備知識................... 2
1.1 Linux內核參考書籍................. 2
1.2 Android應用程序參考書籍................ 3
1.3 下載、編譯和運行Android源代碼.............. 3
1.3.1 下載Android源代碼................ 4
1.3.2 編譯Android源代碼................ 4
1.3.3 運行Android模擬器................ 5
1.4 下載、編譯和運行Android內核源代碼............. 6
1.4.1 下載Android內核源代碼............... 6
1.4.2 編譯Android內核源代碼............... 7
1.4.3 運行Android模擬器................ 8
1.5 開發第一個Android應用程序............... 8
1.6 單獨編譯和打包Android應用程序模塊............. 11
1.6.1 導入單獨編譯模塊的mmm命令............. 11
1.6.2 單獨編譯Android應用程序模塊.............. 12
1.6.3 重新打包Android系統鏡像文件.............. 12
第2章 硬件抽象層.................. 13
2.1 開發Android硬件驅動程序............... 14
2.1.1 實現內核驅動程序模塊............... 14
2.1.2 修改內核Kconfig文件............... 21
2.1.3 修改內核Makefile文件............... 22
2.1.4 編譯內核驅動程序模塊............... 22
2.1.5 驗證內核驅動程序模塊............... 23
2.2 開發C可執行程序驗證Android硬件驅動程序........... 24
2.3 開發Android硬件抽象層模塊............... 26
2.3.1 硬件抽象層模塊編寫規范............... 26
2.3.2 編寫硬件抽象層模塊接口............... 29
2.3.3 硬件抽象層模塊的加載過程.............. 33
2.3.4 處理硬件設備訪問權限問題.............. 36
2.4 開發Android硬件訪問服務............... 38
2.4.1 定義硬件訪問服務接口............... 38
2.4.2 實現硬件訪問服務................ 39
2.4.3 實現硬件訪問服務的JNI方法.............. 40
VI Android系統源代碼情景分析
2.4.4 啟動硬件訪問服務................ 43
2.5 開發Android應用程序來使用硬件訪問服務............ 44
第3章 智能指針.................. 49
3.1 輕量級指針.................. 50
3.1.1 實現原理分析................. 50
3.1.2 應用實例分析................. 53
3.2 強指針和弱指針................. 54
3.2.1 強指針的實現原理分析............... 55
3.2.2 弱指針的實現原理分析............... 61
3.2.3 應用實例分析................. 67
第2篇 Android專用驅動系統
第4章 Logger日志系統................ 74
4.1 Logger日志格式.................. 75
4.2 Logger日志驅動程序................. 76
4.2.1 基礎數據結構................. 77
4.2.2 日志設備的初始化過程............... 78
4.2.3 日志設備文件的打開過程............... 83
4.2.4 日志記錄的讀取過程............... 84
4.2.5 日志記錄的寫入過程............... 88
4.3 運行時庫層日志庫................. 93
4.4 C/C++日志寫入接口................ 100
4.5 Java日志寫入接口................. 104
4.6 Logcat工具分析................. 110
4.6.1 基礎數據結構................. 111
4.6.2 初始化過程................. 115
4.6.3 日志記錄的讀取過程............... 127
4.6.4 日志記錄的輸出過程............... 132
第5章 Binder進程間通信系統............... 144
5.1 Binder驅動程序................. 145
5.1.1 基礎數據結構................. 146
5.1.2 Binder設備的初始化過程.............. 164
5.1.3 Binder設備文件的打開過程.............. 165
5.1.4 Binder設備文件的內存映射過程............. 166
5.1.5 內核緩沖區管理................ 173
5.2 Binder進程間通信庫................ 183
5.3 Binder進程間通信應用實例............... 188
5.4 Binder對象引用計數技術............... 196
5.4.1 Binder本地對象的生命周期.............. 197
5.4.2 Binder實體對象的生命周期.............. 201
5.4.3 Binder引用對象的生命周期.............. 204
5.4.4 Binder代理對象的生命周期.............. 209
目 錄 VII
5.5 Binder對象死亡通知機制............... 212
5.5.1 注冊死亡接收通知................ 213
5.5.2 發送死亡接收通知................ 216
5.5.3 注銷死亡接收通知................ 221
5.6 Service Manager的啟動過程............... 224
5.6.1 打開和映射Binder設備文件.............. 226
5.6.2 注冊為Binder上下文管理者.............. 227
5.6.3 循環等待Client進程請求............... 231
5.7 Service Manager代理對象的獲取過程............. 238
5.8 Service組件的啟動過程................ 244
5.8.1 注冊Service組件................ 245
5.8.2 啟動Binder線程池................ 289
5.9 Service代理對象的獲取過程............... 291
5.10 Binder進程間通信機制的Java接口............. 300
5.10.1 Service Manager的Java代理對象的獲取過程........... 300
5.10.2 Java服務接口的定義和解析.............. 310
5.10.3 Java服務的啟動過程............... 313
5.10.4 Java服務代理對象的獲取過程............. 320
5.10.5 Java服務的調用過程............... 323
第6章 Ashmem匿名共享內存系統............. 327
6.1 Ashmem驅動程序................. 328
6.1.1 基礎數據結構................. 328
6.1.2 匿名共享內存設備的初始化過程............. 330
6.1.3 匿名共享內存設備文件的打開過程............ 332
6.1.4 匿名共享內存設備文件的內存映射過程............ 334
6.1.5 匿名共享內存塊的鎖定和解鎖過程............ 336
6.1.6 匿名共享內存塊的回收過程.............. 344
6.2 運行時庫cutils的匿名共享內存訪問接口............ 345
6.3 匿名共享內存的C++訪問接口.............. 349
6.3.1 MemoryHeapBase................ 349
6.3.2 MemoryBase................. 359
6.3.3 應用實例.................. 364
6.4 匿名共享內存的Java訪問接口.............. 370
6.4.1 MemoryFile................. 370
6.4.2 應用實例.................. 375
6.5 匿名共享內存的共享原理............... 386
第3篇 Android應用程序框架
第7章 Activity組件的啟動過程.............. 392
7.1 Activity組件應用實例................ 392
7.2 根Activity組件的啟動過程............... 398
7.3 子Activity組件在進程內的啟動過程............. 432
VIII Android系統源代碼情景分析
7.4 子Activity組件在新進程中的啟動過程............. 440
第8章 Service組件的啟動過程.............. 443
8.1 Service組件應用實例................ 443
8.2 Service組件在新進程中的啟動過程............. 451
8.3 Service組件在進程內的綁定過程.............. 463
第9章 Android系統廣播機制............... 486
9.1 廣播機制應用實例................. 487
9.2 廣播接收者的注冊過程................ 493
9.3 廣播的發送過程................. 501
第10章 Content Provider組件的實現原理............ 524
10.1 Content Provider組件應用實例.............. 525
10.1.1 ArticlesProvider................ 525
10.1.2 Article.................. 535
10.2 Content Provider組件的啟動過程.............. 550
10.3 Content Provider組件的數據共享原理............. 573
10.3.1 數據共享模型................ 573
10.3.2 數據傳輸過程................ 576
10.4 Content Provider組件的數據更新通知機制............ 596
10.4.1 注冊內容觀察者................ 597
10.4.2 發送數據更新通知............... 603
第11章 Zygote和System進程的啟動過程............ 611
11.1 Zygote進程的啟動腳本................ 611
11.2 Zygote進程的啟動過程................ 614
11.3 System進程的啟動過程................ 622
第12章 Android應用程序進程的啟動過程............ 630
12.1 應用程序進程的創建過程............... 630
12.2 Binder線程池的啟動過程............... 639
12.3 消息循環的創建過程................ 641
第13章 Android應用程序的消息處理機制............ 645
13.1 創建線程消息隊列................ 645
13.2 線程消息循環過程................ 650
13.3 線程消息發送過程................ 655
13.4 線程消息處理過程................ 660
第14章 Android應用程序的鍵盤消息處理機制.......... 667
14.1 鍵盤消息處理模型................ 667
14.2 InputManager的啟動過程............... 670
14.2.1 創建InputManager................ 670
14.2.2 啟動InputManager................ 673
14.2.3 啟動InputDispatcher............... 675
目 錄 IX
14.2.4 啟動InputReader................ 677
14.3 InputChannel的注冊過程............... 688
14.3.1 創建InputChannel................ 689
14.3.2 注冊Server端InputChannel.............. 697
14.3.3 注冊系統當前激活的應用程序窗口............ 701
14.3.4 注冊Client端InputChannel.............. 706
14.4 鍵盤消息的分發過程................ 709
14.4.1 InputReader獲得鍵盤事件.............. 710
14.4.2 InputDispatcher分發鍵盤事件............. 717
14.4.3 系統當前激活的應用程序窗口獲得鍵盤消息.......... 727
14.4.4 InputDispatcher獲得鍵盤事件處理完成通知........... 743
14.5 InputChannel的注銷過程............... 746
14.5.1 銷毀應用程序窗口............... 747
14.5.2 注銷Client端InputChannel.............. 756
14.5.3 注銷Server端InputChannel.............. 758
第15章 Android應用程序線程的消息循環模型.......... 764
15.1 應用程序主線程消息循環模型.............. 765
15.2 與界面無關的應用程序子線程消息循環模型........... 766
15.3 與界面相關的應用程序子線程消息循環模型........... 769
第16章 Android應用程序的安裝和顯示過程........... 778
16.1 應用程序的安裝過程 ................ 778
16.2 應用程序的顯示過程................ 814
序: