發表於2024-11-23
Android源碼分析實錄 pdf epub mobi txt 電子書 下載
第1章 走進Android世界 1
1.1 Android係統的優勢 2
1.1.1 開源 2
1.1.2 強大的開發團隊的支持 2
1.1.3 開發人員的支持 2
1.2 Android係統架構介紹 3
1.2.1 底層操作係統層(Linux內核層) 4
1.2.2 庫(Libraries)和運行環境(Runtime) 4
1.2.3 應用程序框架(ApplicationFramework) 5
1.2.4 頂層應用程序(Application) 5
1.3 核心組件 5
1.3.1 Activity的界麵錶現 5
1.3.2 Intent和IntentFilters界麵切換 6
1.3.3 Service服務 6
1.3.4 用Broadcast IntentReceiver廣播 7
1.3.5 用Content Provider存儲 7
1.4 進程和綫程 7
1.4.1 什麼是進程 7
1.4.2 什麼是綫程 8
1.5 獲取Android 4.3源碼 8
1.5.1 在Linux係統中獲取Android源碼 8
1.5.2 在Windows平颱上獲取Android源碼 9
1.6 Android源碼結構分析 14
1.6.1 Android源碼的目錄結構 15
1.6.2 應用程序 16
1.6.3 應用程序框架 18
1.6.4 係統服務 19
1.6.5 係統程序庫 21
1.6.6 係統運行庫 24
1.6.7 硬件抽象層 25
1.7 編譯Android源碼 26
1.7.1 搭建編譯環境 27
1.7.2 開始編譯 27
1.7.3 在模擬器中運行 29
1.7.4 編譯源碼生成SDK 30
第2章 硬件抽象層詳解 35
2.1 什麼是HAL層 36
2.1.1 為什麼把對硬件的支持劃分為兩層來實現 36
2.1.2 HAL層的位置結構 36
2.2 分析HAL Module架構 38
2.2.1 hw_module_t 39
2.2.2 hw_module_methods_t 40
2.2.3 hw_device_t 40
2.3 分析文件hardware.c 41
2.3.1 函數hw_get_module 41
2.3.2 數組variant_keys 41
2.3.3 載入相應的庫 42
2.3.4 打開相應庫並獲得hw_module_t結構體 43
2.4 分析硬件抽象層的加載過程 44
2.5 分析硬件訪問服務 48
2.5.1 定義硬件訪問服務接口 48
2.5.2 實現硬件訪問服務 49
2.6 分析mokoid工程 50
2.6.1 直接調用Service方法實現 51
2.6.2 通過Manager調用Service實現 56
2.7 分析HAL層的具體實現(以Sensor係統為例) 59
2.7.1 傳感器係統的基礎知識 59
2.7.2 HAL層的Sensor代碼 60
2.7.3 Sensor編程的流程 61
第3章 分析JNI(Java本地接口)層 63
3.1 JNI基礎 64
3.1.1 JNI的層次結構 64
3.1.2 JNI的本質 64
3.1.3 與JNI相關的文件 65
3.2 分析Java層 66
3.2.1 加載JNI庫 66
3.2.2 實現掃描工作 68
3.2.3 讀取並保存信息 69
3.2.4 刪除不是SD卡中的文件信息 72
3.2.5 直接轉嚮JNI 72
3.2.6 掃描函數scanFile 73
3.2.7 異常處理 73
3.3 分析MediaScanner的JNI層 74
3.3.1 將Native對象的指針保存到Java對象 75
3.3.2 創建Native層的MediaScanner對象 75
3.4 分析MediaScanner的Native層 76
3.4.1 注冊JNI函數 76
3.4.2 完成注冊工作 78
3.4.3 動態注冊 80
3.4.4 處理路徑參數 82
3.4.5 掃描文件 83
3.4.6 添加TAG信息 83
3.4.7 JNIEnv接口 85
3.4.8 JNI中的環境變量 86
3.5 JNI實例分析(基於Camera係統) 87
3.5.1 Java層預覽接口 87
3.5.2 注冊預覽的JNI函數 89
3.5.3 C/C++層的預覽函數 92
第4章 Android內存係統分析 95
4.1 Android的進程通信機製 96
4.1.1 Android的進程間通信(IPC)機製Binder 96
4.1.2 Service Manager是Binder機製的上下文管理者 97
4.2 分析Ashmem驅動程序 98
4.2.1 基礎數據結構 98
4.2.2 初始化處理 99
4.2.3 打開匿名共享內存設備文件 101
4.2.4 內存映射 104
4.2.5 讀寫操作 105
4.2.6 鎖定和解鎖 107
4.2.7 迴收內存塊 113
4.3 分析C++訪問接口層 115
4.3.1 接口MemoryHeapBase 115
4.3.2 接口MemoryBase 125
4.4 分析Java訪問接口層 128
4.5 內存優化機製 132
4.5.1 sp和wp簡析 132
4.5.2 詳解智能指針 134
4.5.3 輕量級指針 136
4.5.4 強指針 139
4.5.5 弱指針 153
第5章 Android虛擬機係統詳解 159
5.1 Android虛擬機基礎 160
5.1.1 Android虛擬機源碼目錄 160
5.1.2 Dalvik的架構 161
5.1.3 Dalvik虛擬機的主要特徵 163
5.1.4 Dalvik的進程管理 163
5.1.5 Android的初始化流程 163
5.2 分析Dalvik的運作流程 164
5.2.1 Dalvik虛擬機相關的可執行程序 164
5.2.2 初始化Dalvik虛擬機 167
5.2.3 啓動Zygote 186
5.2.4 啓動SystemServer進程 190
5.2.5 加載class類文件 193
5.3 Dalvik VM的內存係統 197
5.3.1 如何分配內存 197
5.3.2 分析內存管理機製的源碼 199
5.4 分析Dalvik VM的啓動過程 211
5.4.1 創建一個Dalvik VM實例 211
5.4.2 指定控製選項 212
5.4.3 創建並初始化Dalvik VM實例 220
5.4.4 創建JNIEnvExt對象 223
5.4.5 設置當前進程 229
5.4.6 注冊Android核心類的JNI方法 229
5.4.7 使用綫程創建javaCreateThreadEtc鈎子 233
5.5 創建Dalvik VM進程 233
5.5.1 分析底層啓動過程 234
5.5.2 創建Dalvik VM進程 234
5.5.3 初始化運行的Dalvik VM 238
第6章 IPC通信機製詳解 241
6.1 Binder機製概述 242
6.2 分析Binder驅動程序 243
6.2.1 分析數據結構 243
6.2.2 分析設備初始化 255
6.2.3 打開Binder設備文件 257
6.2.4 內存映射 258
6.2.5 釋放物理頁麵 264
6.2.6 分配內核緩衝區 264
6.2.7 釋放內核緩衝區 267
6.2.8 查詢內核緩衝區 269
6.3 Binder封裝庫 270
6.3.1 Binder庫的實現層次 270
6.3.2 類BBinder 271
6.3.3 類BpRefBase 274
6.3.4 類IPCThreadState 275
6.4 初始化Java層Binder框架 279
第7章 Zygote進程、System進程和應用程序進程 283
7.1 Zygote(孕育)進程詳解 284
7.1.1 Zygote基礎 284
7.1.2 分析Zygote的啓動過程 285
7.2 System進程詳解 303
7.2.1 啓動System進程前的準備工作 303
7.2.2 分析SystemServer 304
7.2.3 分析EntropyService 308
7.2.4 分析DropBoxManagerService 310
7.2.5 分析DiskStatsService 318
7.2.6 分析DeviceStorageManagerService 323
7.2.7 分析SamplingProfilerService 326
7.3 應用程序進程詳解 336
7.3.1 創建應用程序 336
7.3.2 啓動綫程池 347
7.3.3 創建信息循環 348
第8章 分析Activity組件 351
8.1 Activity基礎 352
8.1.1 Activity的狀態 352
8.1.2 Activity的主要函數 353
8.2 啓動Activity 355
8.2.1 Launcher啓動應用程序 356
8.2.2 返迴ActivityManagerService的遠程接口 358
8.2.3 解析intent的內容 359
8.2.4 分析檢查機製 363
8.2.5 執行Activity組件的操作 378
8.2.6 將Launcher推入Paused狀態 386
8.2.7 處理消息 388
8.2.8 報告暫停 389
8.2.9 建立雙嚮連接 394
8.2.10 啓動新的Activity 400
8.2.11 發送通知信息 403
第9章 Content Provider數據存儲 405
9.1 Content Provider基礎 406
9.1.1 Content Provider在應用程序中的架構 406
9.1.2 Content Provider的常用接口 407
9.2 啓動Content Provider 408
9.2.1 獲得對象接口 408
9.2.2 存在校驗 410
9.2.3 啓動Android應用程序 416
9.2.4 根據進程啓動Content Provider 416
9.2.5 處理消息 422
9.2.6 具體啓動 423
9.3 Content Provider數據共享 427
9.3.1 獲取接口 427
9.3.2 創建CursorWindow對象 430
9.3.3 數據傳遞 433
9.3.4 處理進程通信的請求 436
9.3.5 數據操作 442
第10章 Broadcast(廣播)係統詳解 447
10.1 Broadcast基礎 448
10.2 發送廣播信息 448
10.2.1 intent描述指示 449
10.2.2 傳遞廣播信息 449
10.2.3 封裝傳遞 450
10.2.4 處理發送請求 451
10.2.5 查找廣播接收者 451
10.2.6 處理廣播信息 455
10.2.7 檢查權限 464
......
書做活動的時候買比書店便宜太多瞭
評分這個內容其實講的不太好,說深不深,說廣不廣
評分學習android源碼的好教材
評分書嘛,就那樣,慢慢看。。。。。。
評分不錯不錯不錯推薦推薦推薦
評分還沒看過 gg…看完補上
評分書很厚,內容多,喜歡
評分感覺寫的一般,直接截取源碼講解,並沒有橫嚮拓展。
評分很實用,講的還算比較具體。但是安卓版本有點老。
Android源碼分析實錄 pdf epub mobi txt 電子書 下載