Android系統原始碼情景分析(修訂版)

Android系統原始碼情景分析(修訂版)

《Android系統原始碼情景分析(修訂版)》是2015年11月電子工業出版社出版的圖書,作者是羅昇陽。

基本介紹

  • 中文名:Android系統原始碼情景分析(修訂版)
  • 作者:羅昇陽
  • ISBN:9787121275470
  • 頁數:840頁
  • 定價:129元
  • 出版社:電子工業出版社
  • 出版時間:2015年11月
  • 開本:16開
內容簡介,圖書目錄,

內容簡介

在內容上,本書結合使用情景,全面、深入、細緻地分析了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

相關詞條

熱門詞條

聯絡我們