第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
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
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
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
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
在內容上,《Android係統源代碼情景分析(修訂版)(含CD光盤1張)》結閤使用情景,全麵、深入、細緻地分析瞭Android係統的源代碼,涉及到Linux內核層、硬件抽象層(HAL)、運行時庫層(Runtime)、應用程序框架層(Application Framework)以及應用程序層(Application)。
在組織上,《Android係統源代碼情景分析(修訂版)(含CD光盤1張)》將上述內容劃分為初識Android係統、Android專用驅動係統和Android應用程序框架三大篇。初識Android係統篇介紹瞭參考書籍、基礎知識以及實驗環境搭建;Android專用驅動係統篇介紹瞭Logger日誌驅動程序、Binder進程間通信驅動程序以及Ashmem匿名共享內存驅動程序;Android應用程序框架篇從組件、進程、消息和安裝四個維度對Android應用程序的框架進行瞭深入的剖析。
通過上述內容及其組織,《Android係統源代碼情景分析(修訂版)(含CD光盤1張)》使讀者既能從整體上把握Android係統的層次結構,又能從細節上掌握每一個層次的要點。
發表於2024-11-27
Android係統源代碼情景分析(修訂版)(含CD光盤1張) 2024 pdf epub mobi 電子書 下載
分析源碼的流程很值得學習,雖然裏麵講到瞭內核驅動方麵的東西,給我的感覺是這些都是給framework(java runtime framework & c/c++ runtime framework)打基礎的,大部分都是在梳理framework的骨架,來龍去脈,總體上有個特點就是基本上一開始就進入源碼層麵開始分析,比較少給...
評分情況分析應該是學毛德操老師的,作者確實做到瞭,作者在講解時,會從java層到native層,再到linux kernel中整個串起來講。使讀者可以完全瞭解某些子係統的運行機製 缺點是沒有多媒體部分,畢竟這個跟硬件廠商相關的 再就是太貴瞭 再有就是少一點點提綱挈領的大局觀,但是這樣...
評分分析源碼的流程很值得學習,雖然裏麵講到瞭內核驅動方麵的東西,給我的感覺是這些都是給framework(java runtime framework & c/c++ runtime framework)打基礎的,大部分都是在梳理framework的骨架,來龍去脈,總體上有個特點就是基本上一開始就進入源碼層麵開始分析,比較少給...
評分這本書是我看過的最深入的一本android書瞭,可以看齣作者是一個很有悟性的程序員,很適閤需要提高的android框架層工程師進階。binder部分是目前所有書中分析的最全麵的。匿名共享內存分析的也很好。
評分這本書是我看過的最深入的一本android書瞭,可以看齣作者是一個很有悟性的程序員,很適閤需要提高的android框架層工程師進階。binder部分是目前所有書中分析的最全麵的。匿名共享內存分析的也很好。
圖書標籤: Android 編程 計算機 操作係統 移動操作係統 安卓 移動互聯網 互聯網
這本書的厚度用來墊顯示器剛剛好
評分這本書的厚度用來墊顯示器剛剛好
評分這本書的厚度用來墊顯示器剛剛好
評分這本書的厚度用來墊顯示器剛剛好
評分這本書的厚度用來墊顯示器剛剛好
Android係統源代碼情景分析(修訂版)(含CD光盤1張) 2024 pdf epub mobi 電子書 下載