深入理解-Android 5源代碼 版權信息
- ISBN:9787115405951
- 條形碼:9787115405951 ; 978-7-115-40595-1
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
深入理解-Android 5源代碼 本書特色
本書共分20章,循序漸進地分析了android系統(tǒng)的基本源代碼,依次講解了android系統(tǒng)介紹,獲取并編譯android源代碼,分析java native interface系統(tǒng),分析hal系統(tǒng),分析ipc通信機制,分析binder對象和java接口,分析servicemanager和messagequeue,init進程和zygote進程,system進程和應用程序進程,分析activity組件,應用程序管理服務分析,content provider、broadcast(廣播)系統(tǒng),電源管理系統(tǒng)分析,分析windowmanagerservice系統(tǒng)、分析電話系統(tǒng),分析短信系統(tǒng)、sensor傳感器系統(tǒng)詳解、分析seandroid系統(tǒng)和分析art系統(tǒng)等核心知識。本書內容言簡意賅,講解方法通俗易懂,不僅適合有一定基礎的讀者學習,也特別有利于初學者學習。
本書適合android初學者、android愛好者、android底層開發(fā)人員、android應用開發(fā)人員學習,也可以作為相關培訓學校和大專院校相關專業(yè)師生的教學用書。
深入理解-Android 5源代碼 內容簡介
新版本android 5.0
全面講解了android 5源程序的核心技術,包括java native interface系統(tǒng),hal系統(tǒng),ipc通信機制,binder對象和java接口,init進程和zygote進程,system進程和應用程序進程,activity組件,應用程序管理服務,content provider、broadcast系統(tǒng),電源管理系統(tǒng),電話系統(tǒng),短信系統(tǒng)、傳感器系統(tǒng)、seandroid系統(tǒng)和art系統(tǒng)等核心知識。
深入理解-Android 5源代碼 目錄
目錄第1章 android系統(tǒng)介紹 11.1 android系統(tǒng)成功的秘訣 11.1.1 獲取了業(yè)界的廣泛支持 11.1.2 研發(fā)陣容強大 11.1.3 為開發(fā)人員“精心定制” 11.1.4 開源 21.2 剖析android系統(tǒng)架構 21.2.1 底層操作系統(tǒng)層(os) 31.2.2 各種庫(libraries)和android運行環(huán)境(runtime) 31.2.3 application framework(應用程序框架) 31.2.4 頂層應用程序(application) 41.3 五大組件 41.3.1 activity界面 41.3.2 intent和intent filters切換 41.3.3 service(服務) 51.3.4 broadcast receiver發(fā)送廣播 51.3.5 用content provider存儲數據 61.4 進程和線程 61.4.1 什么是進程 61.4.2 什么是線程 6第2章 獲取并編譯android源代碼 72.1 獲取android源代碼 72.1.1 在linux系統(tǒng)中獲取android源代碼 72.1.2 在windows平臺獲取android源代碼 82.2 分析android源代碼結構 102.2.1 總體結構 112.2.2 應用程序部分 122.2.3 應用程序框架部分 132.2.4 系統(tǒng)服務部分 132.2.5 系統(tǒng)程序庫部分 152.2.6 硬件抽象層部分 172.3 android源代碼提供的接口 182.3.1 暴露接口和隱藏接口 182.3.2 調用隱藏接口 232.4 編譯源代碼 252.4.1 搭建編譯環(huán)境 252.4.2 在模擬器中運行 272.5 編譯源代碼生成sdk 27第3章 分析java native interface系統(tǒng) 303.1 jni基礎 303.1.1 jni的功能結構 303.1.2 jni的調用層次 303.1.3 分析jni的本質 313.2 分析mediascanner 323.2.1 分析java層 323.2.2 分析jni層 373.2.3 分析native(本地)層 383.3 分析camera系統(tǒng)的jni 443.3.1 java層預覽接口 453.3.2 注冊預覽的jni函數 463.3.3 c/c++層的預覽函數 48第4章 分析hal系統(tǒng) 494.1 hal基礎 494.1.1 推出hal的背景 494.1.2 hal的基本結構 504.2 分析hal module架構 514.2.1 hw_module_t 524.2.2 結構hw_module_methods_t的定義 524.2.3 hw_device_t結構 534.3 分析文件hardware.c 534.3.1 尋找動態(tài)鏈接庫的地址 534.3.2 數組variant_keys 544.3.3 載入相應的庫 544.3.4 獲得hw_module_t結構體 544.4 分析硬件抽象層的加載過程 554.5 分析硬件訪問服務 584.5.1 定義硬件訪問服務接口 584.5.2 具體實現 594.6 分析android官方實例 604.6.1 獲取實例工程源代碼 604.6.2 直接調用service方法的實現代碼 614.6.3 通過manager調用service的實現代碼 644.7 hal和系統(tǒng)移植 664.7.1 移植各個android部件的方式 664.7.2 設置設備權限 674.7.3 init.rc初始化 704.7.4 文件系統(tǒng)的屬性 70第5章 分析ipc通信機制 725.1 binder機制概述 725.2 分析binder驅動程序 735.2.1 分析數據結構 735.2.2 分析設備初始化 825.2.3 打開binder設備文件 835.2.4 內存映射 855.2.5 釋放物理頁面 895.2.6 分配內核緩沖區(qū) 895.2.7 釋放內核緩沖區(qū) 915.2.8 查詢內核緩沖區(qū) 935.3 binder封裝庫 935.3.1 類bbinder 945.3.2 類bprefbase 965.3.3 類ipcthreadstate 975.4 初始化java層binder框架 995.5 分析mediaserver的通信機制 1015.5.1 mediaserver的入口函數 1015.5.2 processstate 1025.5.3 defaultservicemanager 1035.5.4 注冊mediaplayerservice 1085.5.5 分析startthread pool和join thread pool 117第6章 分析binder對象和java接口 1196.1 分析實體對象(binder_node) 1196.2 分析本地對象(bbinder) 1216.3 分析引用對象(binder_ref) 1296.4 分析代理對象(bpbinder) 1316.5 分析java接口 1346.5.1 獲取service manager 1346.5.2 分析activitymanagerservice的java層 138第7章 分析servicemanager和messagequeue 1517.1 分析servicemanager 1517.1.1 分析主入口函數 1517.1.2 打開binder設備文件 1527.1.3 注冊處理 1547.1.4 創(chuàng)建binder實體對象 1567.1.5 盡職的循環(huán) 1577.1.6 將信息注冊到servicemanager 1627.1.7 分析mediaplayerservice和client 1647.2 獲得service manager接口 1697.3 分析messagequeue 1717.3.1 創(chuàng)建messagequeue 1717.3.2 提取消息 1717.3.3 分析函數nativepollonce 174第8章 init進程和zygote進程 1828.1 分析init進程 1828.1.1 分析入口函數 1828.1.2 分析配置文件 1858.1.3 分析service 1908.1.4 解析on字段的內容 1958.1.5 init控制service 1978.1.6 控制屬性服務 2048.2 分析zygote(孕育)進程 2108.2.1 zygote基礎 2118.2.2 分析zygote的啟動過程 211第9章 system進程和應用程序進程 2249.1 分析system進程 2249.1.1 啟動system進程前的準備工作 2249.1.2 分析systemserver 2259.1.3 分析entropyservice 2279.1.4 分析dropboxmanagerservice 2299.1.5 分析diskstatsservice 2349.1.6 分析devicestoragemanagerservice(監(jiān)測系統(tǒng)內存存儲空間的狀態(tài)) 2379.1.7 分析samplingprofilerservice 2399.2 分析應用程序進程 2469.2.1 創(chuàng)建應用程序 2469.2.2 啟動線程池 2549.2.3 創(chuàng)建信息循環(huán) 255第10章 分析activity組件 25810.1 activity基礎 25810.1.1 activity狀態(tài) 25810.1.2 剖析activity中的主要函數 25910.2 分析activity的啟動源代碼 26010.2.1 launcher啟動應用程序 26110.2.2 返回activitymanagerservice的遠程接口 26210.2.3 解析intent的內容 26310.2.4 分析檢查機制 26510.2.5 執(zhí)行activity組件的操作 27410.2.6 將launcher推入paused狀態(tài) 27910.2.7 處理消息 28110.2.8 暫停完畢 28210.2.9 建立雙向連接 28510.2.10 啟動新的activity 28910.2.11 通知機制 29110.2.12 發(fā)送消息 292第11章 應用程序管理服務——packagemanagerservice分析 29511.1 packagemanagerservice概述 29511.2 系統(tǒng)進程啟動 29611.3 開始運行 29611.4 掃描apk文件 30611.5 解析并安裝文件 30711.6 啟動系統(tǒng)默認home應用程序launcher 32311.6.1 設置系統(tǒng)進程 32311.6.2 啟動home應用程序 32411.6.3 啟動com.android.launcher2. launcher 33011.6.4 加載應用程序 33311.6.5 獲得activity 336第12章 content provider存儲機制 34112.1 content provider基礎 34112.1.1 content provider在應用程序中的架構 34112.1.2 content provider的常用接口 34212.2 啟動content provider 34312.2.1 獲得對象接口 34312.2.2 存在校驗 34412.2.3 啟動android應用程序 34812.2.4 根據進程啟動content provider 34812.2.5 處理消息 35212.2.6 具體啟動 35412.3 content provider數據共享 35612.3.1 獲取接口 35612.3.2 創(chuàng)建cursorwindow對象 35812.3.3 數據傳遞 36112.3.4 處理進程通信的請求 36212.3.5 數據操作 367第13章 分析廣播機制源代碼 37013.1 broadcast基礎 37013.2 發(fā)送廣播信息 37113.2.1 intent描述指示 37113.2.2 傳遞廣播信息 37113.2.3 封裝傳遞 37213.2.4 處理發(fā)送請求 37213.2.5 查找廣播接收者 37313.2.6 處理廣播信息 37513.2.7 檢查權限 38213.2.8 處理的進程通信請求 38413.3 分析broadcastreceiver 38613.3.1 mainactivity的調用 38613.3.2 注冊廣播接收者 38713.3.3 獲取接口對象 38813.3.4 處理進程間的通信請求 390第14章 分析電源管理系統(tǒng) 39214.1 power management架構基礎 39214.2 分析framework層 39214.2.1 文件powermanager.java 39314.2.2 提供powermanager功能 39314.3 jni層架構分析 41014.3.1 定義了兩層之間的接口函數 41014.3.2 與linux kernel層進行交互 41114.4 kernel(內核)層架構分析 41114.4.1 文件power.c 41214.4.2 文件earlysuspend.c 41414.4.3 文件wakelock.c 41414.4.4 文件resume.c 41614.4.5 文件suspend.c 41614.4.6 文件main.c 41714.4.7 proc文件 41714.5 wakelock和early_suspend 41814.5.1 wakelock的原理 41814.5.2 early_suspend的原理 41914.5.3 android休眠 41914.5.4 android喚醒 42114.6 battery電池系統(tǒng)架構和管理 42114.6.1 實現驅動程序 42214.6.2 實現jni本地代碼 42214.6.3 java層代碼 42314.6.4 實現uevent部分 42414.7 jobscheduler節(jié)能調度機制 42814.7.1 jobscheduler機制的推出背景 42814.7.2 jobscheduler的實現 42814.7.3 實現操作調度 42914.7.4 封裝調度任務 431第15章 分析windowmanagerservice系統(tǒng) 43415.1 windowmanagerservice基礎 43415.2 計算activity窗口的大小 43515.2.1 實現view遍歷 43615.2.2 函數relayoutwindow 44615.2.3 函數relayoutwindow 44715.2.4 攔截消息的處理類 46615.2.5 判斷是否計算過 477第16章 分析電話系統(tǒng) 48216.1 android電話系統(tǒng)詳解 48216.1.1 電話系統(tǒng)簡介 48216.1.2 電話系統(tǒng)結構 48316.1.3 驅動程序介紹 48516.1.4 ril接口 48616.1.5 分析電話系統(tǒng)的實現流程 48816.2 電話系統(tǒng)中的音頻模塊 49316.2.1 音頻系統(tǒng)結構 49316.2.2 分析音頻系統(tǒng)的層次 49416.3 分析撥號流程 50116.3.1 撥號界面 50116.3.2 實現phone應用 50416.3.3 call通話控制 50716.3.4 靜態(tài)方法調用 51016.3.5 通話管理 51216.3.6 dial撥號 51416.3.7 狀態(tài)跟蹤 51516.3.8 ril消息“出/入”口 51616.3.9 顯示通話主界面 517第17章 分析短信系統(tǒng) 51817.1 短信系統(tǒng)的主界面 51817.2 發(fā)送普通短信 52017.3 發(fā)送彩信 53017.4 接收短信 53717.4.1 java應用層的接收流程 53817.4.2 framework層的處理過程 540第18章 sensor傳感器系統(tǒng)詳解 54218.1 android傳感器系統(tǒng)概述 54218.2 java層詳解 54318.3 frameworks層詳解 54818.3.1 監(jiān)聽傳感器的變化 54818.3.2 注冊監(jiān)聽 54818.4 jni層詳解 55618.4.1 實現native(本地)函數 55718.4.2 處理客戶端數據 56118.4.3 處理服務端數據 56318.4.4 封裝hal層的代碼 57218.4.5 處理消息隊列 57618.5 hal層詳解 578第19章 分析seandroid系統(tǒng) 58519.1 seandroid概述 58519.1.1 內核空間 58719.1.2 用戶空間 58819.2 文件安全上下文 59619.2.1 設置打包在rom里面的文件的安全上下文 59719.2.2 設置虛擬文件系統(tǒng)的安全上下文 60019.2.3 設置應用程序數據文件的安全上下文 60119.3 進程安全上下文 61219.3.1 為獨立進程靜態(tài)地設置安全上下文 61219.3.2 為應用程序進程設置安全上下文 615第20章 分析art系統(tǒng) 62120.1 對比dalvik vm和art 62120.2 啟動art 62320.2.1 運行app_process進程 62420.2.2 準備啟動 62720.2.3 創(chuàng)建運行實例 63220.2.4 注冊本地jni函數 63320.2.5 啟動守護進程 63420.2.6 解析參數 63520.2.7 初始化類、方法和域 64120.3 分析主函數main 64720.4 查找目標類 64820.4.1 函數lookupclass() 64820.4.2 函數defineclass() 65020.4.3 函數insertclass() 65320.4.4 函數linkclass() 65320.5 類操作 65520.6 實現托管操作 65620.7 加載oat文件 66020.7.1 產生oat 66020.7.2 創(chuàng)建art虛擬機 66120.7.3 解析啟動參數并創(chuàng)建堆 66320.7.4 生成指定目錄文件 66520.7.5 加載oat文件 66620.7.6 解析字段 668
展開全部
深入理解-Android 5源代碼 作者簡介
李駿,清華大學電子信息工程專業(yè)學士。較早進入Android開發(fā)領域。有多年的Android開發(fā)經驗,熟練使用Java和C/C++進行軟件開發(fā)。熟悉Android層次結構和Linux驅動層的結構及其上的開發(fā),有著豐富的Android底層和驅動層的優(yōu)化、移植經驗,擅長利用JNI技術開發(fā) Android上的應用程序。曾帶領團隊利用NDK技術成功開發(fā)過具有庫侖計電池芯片的電池管理軟件,以及在Android上成功移植人臉識別程序,目前在凹凸電子擔任Android架構師。