|
-- 會員 / 註冊 --
|
|
|
|
深入理解Android 5 源代碼 ( 簡體 字) |
作者:李駿 | 類別:1. -> 程式設計 -> 手機程式 -> Android |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 43064 詢問書籍請說出此書號!【缺書】 NT售價: 495 元 |
出版日:1/1/2016 |
頁數:674 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115405951 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 本書共分20章,循序漸進地分析了Android系統的基本源代碼,依次講解了Android系統介紹,獲取并編譯Android源代碼,分析Java Native Interface系統,分析HAL系統,分析IPC通信機制,分析Binder對象和Java接口,分析ServiceManager和MessageQueue,init進程和Zygote進程,System進程和應用程序進程,分析Activity組件,應用程序管理服務分析,Content Provider、Broadcast(廣播)系統,電源管理系統分析,分析WindowManagerService系統、分析電話系統,分析短信系統、Sensor傳感器系統詳解、分析SEAndroid系統和分析ART系統等核心知識。本書內容言簡意賅,講解方法通俗易懂,不僅適合有一定基礎的讀者學習,也特別有利于初學者學習。 本書適合Android初學者、Android愛好者、Android底層開發人員、Android應用開發人員學習,也可以作為相關培訓學校和大專院校相關專業師生的教學用書。 |
目錄:第1章 Android系統介紹 1 1.1 Android系統成功的秘訣 1 1.1.1 獲取了業界的廣泛支持 1 1.1.2 研發陣容強大 1 1.1.3 為開發人員“精心定制” 1 1.1.4 開源 2 1.2 剖析Android系統架構 2 1.2.1 底層操作系統層(OS) 3 1.2.2 各種庫(Libraries)和Android 運行環境(RunTime) 3 1.2.3 Application Framework(應用 程序框架) 3 1.2.4 頂層應用程序(Application) 4 1.3 五大組件 4 1.3.1 Activity界面 4 1.3.2 Intent和Intent Filters切換 4 1.3.3 Service(服務) 5 1.3.4 Broadcast Receiver發送廣播 5 1.3.5 用Content Provider存儲數據 6 1.4 進程和線程 6 1.4.1 什么是進程 6 1.4.2 什么是線程 6 第2章 獲取并編譯Android源代碼 7 2.1 獲取Android源代碼 7 2.1.1 在Linux系統中獲取Android 源代碼 7 2.1.2 在Windows平臺獲取Android 源代碼 8 2.2 分析Android源代碼結構 10 2.2.1 總體結構 11 2.2.2 應用程序部分 12 2.2.3 應用程序框架部分 13 2.2.4 系統服務部分 13 2.2.5 系統程序庫部分 15 2.2.6 硬件抽象層部分 17 2.3 Android源代碼提供的接口 18 2.3.1 暴露接口和隱藏接口 18 2.3.2 調用隱藏接口 23 2.4 編譯源代碼 25 2.4.1 搭建編譯環境 25 2.4.2 在模擬器中運行 27 2.5 編譯源代碼生成SDK 27 第3章 分析Java Native Interface 系統 30 3.1 JNI基礎 30 3.1.1 JNI的功能結構 30 3.1.2 JNI的調用層次 30 3.1.3 分析JNI的本質 31 3.2 分析MediaScanner 32 3.2.1 分析Java層 32 3.2.2 分析JNI層 37 3.2.3 分析Native(本地)層 38 3.3 分析Camera系統的JNI 44 3.3.1 Java層預覽接口 45 3.3.2 注冊預覽的JNI函數 46 3.3.3 C/C++層的預覽函數 48 第4章 分析HAL系統 49 4.1 HAL基礎 49 4.1.1 推出HAL的背景 49 4.1.2 HAL的基本結構 50 4.2 分析HAL module架構 51 4.2.1 hw_module_t 52 4.2.2 結構hw_module_methods_t 的定義 52 4.2.3 hw_device_t結構 53 4.3 分析文件hardware.c 53 4.3.1 尋找動態鏈接庫的地址 53 4.3.2 數組variant_keys 54 4.3.3 載入相應的庫 54 4.3.4 獲得hw_module_t結構體 54 4.4 分析硬件抽象層的加載過程 55 4.5 分析硬件訪問服務 58 4.5.1 定義硬件訪問服務接口 58 4.5.2 具體實現 59 4.6 分析Android官方實例 60 4.6.1 獲取實例工程源代碼 60 4.6.2 直接調用Service方法的 實現代碼 61 4.6.3 通過Manager調用Service 的實現代碼 64 4.7 HAL和系統移植 66 4.7.1 移植各個Android部件 的方式 66 4.7.2 設置設備權限 67 4.7.3 init.rc初始化 70 4.7.4 文件系統的屬性 70 第5章 分析IPC通信機制 72 5.1 Binder機制概述 72 5.2 分析Binder驅動程序 73 5.2.1 分析數據結構 73 5.2.2 分析設備初始化 82 5.2.3 打開Binder設備文件 83 5.2.4 內存映射 85 5.2.5 釋放物理頁面 89 5.2.6 分配內核緩沖區 89 5.2.7 釋放內核緩沖區 91 5.2.8 查詢內核緩沖區 93 5.3 Binder封裝庫 93 5.3.1 類BBinder 94 5.3.2 類BpRefBase 96 5.3.3 類IPCThreadState 97 5.4 初始化Java層Binder框架 99 5.5 分析MediaServer的通信機制 101 5.5.1 MediaServer的入口函數 101 5.5.2 ProcessState 102 5.5.3 defaultServiceManager 103 5.5.4 注冊MediaPlayerService 108 5.5.5 分析StartThread Pool和 join Thread Pool 117 第6章 分析Binder對象和Java接口 119 6.1 分析實體對象(binder_node) 119 6.2 分析本地對象(BBinder) 121 6.3 分析引用對象(binder_ref) 129 6.4 分析代理對象(BpBinder) 131 6.5 分析Java接口 134 6.5.1 獲取Service Manager 134 6.5.2 分析ActivityManagerService 的Java層 138 第7章 分析ServiceManager和 MessageQueue 151 7.1 分析ServiceManager 151 7.1.1 分析主入口函數 151 7.1.2 打開Binder設備文件 152 7.1.3 注冊處理 154 7.1.4 創建Binder實體對象 156 7.1.5 盡職的循環 157 7.1.6 將信息注冊到 ServiceManager 162 7.1.7 分析MediaPlayerService 和Client 164 7.2 獲得Service Manager接口 169 7.3 分析MessageQueue 171 7.3.1 創建MessageQueue 171 7.3.2 提取消息 171 7.3.3 分析函數nativePollOnce 174 第8章 init進程和Zygote進程 182 8.1 分析init進程 182 8.1.1 分析入口函數 182 8.1.2 分析配置文件 185 8.1.3 分析Service 190 8.1.4 解析on字段的內容 195 8.1.5 init控制Service 197 8.1.6 控制屬性服務 204 8.2 分析Zygote(孕育)進程 210 8.2.1 Zygote基礎 211 8.2.2 分析Zygote的啟動過程 211 第9章 System進程和應用程序進程 224 9.1 分析System進程 224 9.1.1 啟動System進程前 的準備工作 224 9.1.2 分析SystemServer 225 9.1.3 分析EntropyService 227 9.1.4 分析DropBoxManager Service 229 9.1.5 分析DiskStatsService 234 9.1.6 分析DeviceStorageManager Service(監測系統內存存儲 空間的狀態) 237 9.1.7 分析SamplingProfiler Service 239 9.2 分析應用程序進程 246 9.2.1 創建應用程序 246 9.2.2 啟動線程池 254 9.2.3 創建信息循環 255 第10章 分析Activity組件 258 10.1 Activity基礎 258 10.1.1 Activity狀態 258 10.1.2 剖析Activity中的 主要函數 259 10.2 分析Activity的啟動源代碼 260 10.2.1 Launcher啟動應用程序 261 10.2.2 返回ActivityManagerService 的遠程接口 262 10.2.3 解析intent的內容 263 10.2.4 分析檢查機制 265 10.2.5 執行Activity組件的操作 274 10.2.6 將Launcher推入Paused 狀態 279 10.2.7 處理消息 281 10.2.8 暫停完畢 282 10.2.9 建立雙向連接 285 10.2.10 啟動新的Activity 289 10.2.11 通知機制 291 10.2.12 發送消息 292 第11章 應用程序管理服務——PackageManagerService分析 295 11.1 PackageManagerService概述 295 11.2 系統進程啟動 296 11.3 開始運行 296 11.4 掃描APK文件 306 11.5 解析并安裝文件 307 11.6 啟動系統默認Home應用程序 Launcher 323 11.6.1 設置系統進程 323 11.6.2 啟動Home應用程序 324 11.6.3 啟動com.android.launcher2. Launcher 330 11.6.4 加載應用程序 333 11.6.5 獲得Activity 336 第12章 Content Provider存儲機制 341 12.1 Content Provider基礎 341 12.1.1 Content Provider在應用 程序中的架構 341 12.1.2 Content Provider的常用 接口 342 12.2 啟動Content Provider 343 12.2.1 獲得對象接口 343 12.2.2 存在校驗 344 12.2.3 啟動Android應用程序 348 12.2.4 根據進程啟動Content Provider 348 12.2.5 處理消息 352 12.2.6 具體啟動 354 12.3 Content Provider數據共享 356 12.3.1 獲取接口 356 12.3.2 創建CursorWindow對象 358 12.3.3 數據傳遞 361 12.3.4 處理進程通信的請求 362 12.3.5 數據操作 367 第13章 分析廣播機制源代碼 370 13.1 Broadcast基礎 370 13.2 發送廣播信息 371 13.2.1 intent描述指示 371 13.2.2 傳遞廣播信息 371 13.2.3 封裝傳遞 372 13.2.4 處理發送請求 372 13.2.5 查找廣播接收者 373 13.2.6 處理廣播信息 375 13.2.7 檢查權限 382 13.2.8 處理的進程通信請求 384 13.3 分析BroadCastReceiver 386 13.3.1 MainActivity的調用 386 13.3.2 注冊廣播接收者 387 13.3.3 獲取接口對象 388 13.3.4 處理進程間的通信請求 390 第14章 分析電源管理系統 392 14.1 Power Management架構基礎 392 14.2 分析Framework層 392 14.2.1 文件PowerManager.java 393 14.2.2 提供PowerManager功能 393 14.3 JNI層架構分析 410 14.3.1 定義了兩層之間的 接口函數 410 14.3.2 與Linux Kernel層 進行交互 411 14.4 Kernel(內核)層架構分析 411 14.4.1 文件power.c 412 14.4.2 文件earlysuspend.c 414 14.4.3 文件wakelock.c 414 14.4.4 文件resume.c 416 14.4.5 文件suspend.c 416 14.4.6 文件main.c 417 14.4.7 proc文件 417 14.5 wakelock和early_suspend 418 14.5.1 wakelock的原理 418 14.5.2 early_suspend的原理 419 14.5.3 Android休眠 419 14.5.4 Android喚醒 421 14.6 Battery電池系統架構和管理 421 14.6.1 實現驅動程序 422 14.6.2 實現JNI本地代碼 422 14.6.3 Java層代碼 423 14.6.4 實現Uevent部分 424 14.7 JobScheduler節能調度機制 428 14.7.1 JobScheduler機制的 推出背景 428 14.7.2 JobScheduler的實現 428 14.7.3 實現操作調度 429 14.7.4 封裝調度任務 431 第15章 分析WindowManagerService 系統 434 15.1 WindowManagerService基礎 434 15.2 計算Activity窗口的大小 435 15.2.1 實現View遍歷 436 15.2.2 函數relayoutWindow 446 15.2.3 函數relayoutWindow 447 15.2.4 攔截消息的處理類 466 15.2.5 判斷是否計算過 477 第16章 分析電話系統 482 16.1 Android電話系統詳解 482 16.1.1 電話系統簡介 482 16.1.2 電話系統結構 483 16.1.3 驅動程序介紹 485 16.1.4 RIL接口 486 16.1.5 分析電話系統的實現流程 488 16.2 電話系統中的音頻模塊 493 16.2.1 音頻系統結構 493 16.2.2 分析音頻系統的層次 494 16.3 分析撥號流程 501 16.3.1 撥號界面 501 16.3.2 實現Phone應用 504 16.3.3 Call通話控制 507 16.3.4 靜態方法調用 510 16.3.5 通話管理 512 16.3.6 dial撥號 514 16.3.7 狀態跟蹤 515 16.3.8 RIL消息“出/入”口 516 16.3.9 顯示通話主界面 517 第17章 分析短信系統 518 17.1 短信系統的主界面 518 17.2 發送普通短信 520 17.3 發送彩信 530 17.4 接收短信 537 17.4.1 Java應用層的接收流程 538 17.4.2 Framework層的處理過程 540 第18章 Sensor傳感器系統詳解 542 18.1 Android傳感器系統概述 542 18.2 Java層詳解 543 18.3 Frameworks層詳解 548 18.3.1 監聽傳感器的變化 548 18.3.2 注冊監聽 548 18.4 JNI層詳解 556 18.4.1 實現Native(本地)函數 557 18.4.2 處理客戶端數據 561 18.4.3 處理服務端數據 563 18.4.4 封裝HAL層的代碼 572 18.4.5 處理消息隊列 576 18.5 HAL層詳解 578 第19章 分析SEAndroid系統 585 19.1 SEAndroid概述 585 19.1.1 內核空間 587 19.1.2 用戶空間 588 19.2 文件安全上下文 596 19.2.1 設置打包在ROM里面 的文件的安全上下文 597 19.2.2 設置虛擬文件系統的 安全上下文 600 19.2.3 設置應用程序數據文件的 安全上下文 601 19.3 進程安全上下文 612 19.3.1 為獨立進程靜態地設置 安全上下文 612 19.3.2 為應用程序進程設置 安全上下文 615 第20章 分析ART系統 621 20.1 對比Dalvik VM和ART 621 20.2 啟動ART 623 20.2.1 運行app_process進程 624 20.2.2 準備啟動 627 20.2.3 創建運行實例 632 20.2.4 注冊本地JNI函數 633 20.2.5 啟動守護進程 634 20.2.6 解析參數 635 20.2.7 初始化類、方法和域 641 20.3 分析主函數main 647 20.4 查找目標類 648 20.4.1 函數LookupClass() 648 20.4.2 函數DefineClass() 650 20.4.3 函數InsertClass() 653 20.4.4 函數LinkClass() 653 20.5 類操作 655 20.6 實現托管操作 656 20.7 加載OAT文件 660 20.7.1 產生OAT 660 20.7.2 創建ART虛擬機 661 20.7.3 解析啟動參數并創建堆 663 20.7.4 生成指定目錄文件 665 20.7.5 加載OAT文件 666 20.7.6 解析字段 668 |
序: |
|