出版時(shí)間:2011-9-5 出版社:機(jī)械工業(yè)出版社 作者:鄧凡平 頁數(shù):488
Tag標(biāo)簽:無
前言
近兩年來,IT行業(yè)的最熱點(diǎn)聚焦到了移動(dòng)互聯(lián)網(wǎng)上。PC時(shí)代,WINTEL聯(lián)盟成就了英特爾和微軟各自的霸業(yè)。移動(dòng)互聯(lián)網(wǎng)時(shí)代,誰將上演新的傳奇?新生的Android當(dāng)年僅用短短一年多的時(shí)間就躋身全球智能操作系統(tǒng)的三甲行列。在北美市場,如今Android已經(jīng)超過iOS和黑莓系統(tǒng)成為老大!Android勢不可擋,ARM+Android組合的前景一片光明,越來越多的從業(yè)者加入了Android行列! 與帶給人們良好用戶體驗(yàn)的iOS不一樣的是,Android是一個(gè)開放的系統(tǒng),其所有代碼都是開源的。因此,對于開發(fā)者而言,不僅可以做到知其然,更可以做到知其所以然! 然而,要想知道其所以然,并不是一件簡單的事情?;叵氘?dāng)初,我開始接觸Android的時(shí)候,除了Android源碼外,其他資料甚少。Android是基于Linux的完整操作系統(tǒng),其代碼量讓人望而生畏??梢韵胂?,在沒有指導(dǎo)的情況下一頭扎進(jìn)操作系統(tǒng)龐大的代碼中是一件讓人多么痛苦的事情。時(shí)間過得很快,Android生態(tài)鏈已經(jīng)得到了充分的發(fā)展?,F(xiàn)在市場上的Android資料已經(jīng)開始泛濫,書籍已經(jīng)數(shù)不勝數(shù)。然而,絕大部分書籍只限于講解Android應(yīng)用的開發(fā)(拜Android應(yīng)用API所賜),沒有深入到系統(tǒng)級的探討,極少的所謂提供Android深入指導(dǎo)的資料也只是淺嘗輒止。如果想深入了解Android系統(tǒng),只有華山一條路:自己看Android源代碼! 正是因?yàn)槿绱耍?dāng)初凡平告訴我他要系統(tǒng)地整理其深入鉆研Android源代碼的心得時(shí),我表示了強(qiáng)烈的贊同。這是一件極少有人做過的事情,這件事情將給已經(jīng)或即將跨入Android世界的同仁們極大的幫助!這本書里,作者以代碼框架為主線,用循序漸進(jìn)的方式將框架中的關(guān)鍵點(diǎn)一一剖開,從而給讀者一個(gè)架構(gòu)清楚、細(xì)節(jié)完善的立體展現(xiàn)。另外,凡平還會(huì)用他的幽默給正在啃枯燥代碼的您帶來不少笑意和輕松。毫無疑問,如果您想深入了解Android系統(tǒng),這本書就是您進(jìn)入Android神秘世界的鑰匙?! ∪绻礈?zhǔn)了移動(dòng)互聯(lián)網(wǎng)的前景,想深入理解Android,那就讓這本書指導(dǎo)您前進(jìn)吧! 鄧必山 2011年6月于北京
內(nèi)容概要
《深入理解Android:卷I》是一本以情景方式對Android的源代碼進(jìn)行深入分析的書。內(nèi)容廣泛,以對Framework層的分析為主,兼顧Native層和Application層;分析深入,每一部分源代碼的分析都力求透徹;針對性強(qiáng),注重實(shí)際應(yīng)用開發(fā)需求,書中所涵蓋的知識點(diǎn)都是Android應(yīng)用開發(fā)者和系統(tǒng)開發(fā)者需要重點(diǎn)掌握的。
全書共10章,第1章介紹了閱讀本書所需要做的準(zhǔn)備工作,主要包括對Android系統(tǒng)架構(gòu)和源碼閱讀方法的介紹;第2章通過對Android系統(tǒng)中的MediaScanner進(jìn)行分析,詳細(xì)講解了Android中十分重要的JNI技術(shù);第3章分析了init進(jìn)程,揭示了通過解析init.rc來啟動(dòng)Zygote以及屬性服務(wù)的工作原理;第4章分析了Zygote、SystemServer等進(jìn)程的工作機(jī)制,同時(shí)還討論了Android的啟動(dòng)速度、虛擬機(jī)HeapSize的大小調(diào)整、Watchdog工作原理等問題;第5章講解了Android系統(tǒng)中常用的類,包括sp、wp、RefBase、Thread等類,同步類,以及Java中的Handler類和Looper類,掌握這些類的知識后方能在后續(xù)的代碼分析中做到游刃有余;第6章以MediaServer為切入點(diǎn),對Android中極為重要的Binder進(jìn)行了較為全面的分析,深刻揭示了其本質(zhì)。第7章對Audio系統(tǒng)進(jìn)行了深入的分析,尤其是AudioTrack、AudioFlinger和AudioPolicyService等的工作原理。第8章深入講解了Surface系統(tǒng)的實(shí)現(xiàn)原理,分析了Surface與Activity之間以及Surface與SurfaceFlinger之間的關(guān)系、SurfaceFlinger的工作原理、Surface系統(tǒng)中的幀數(shù)據(jù)傳輸以及LayerBuffer的工作流程。第9章對Vold和Rild的原理和機(jī)制進(jìn)行了深入的分析,同時(shí)還探討了Phone設(shè)計(jì)優(yōu)化的問題;第10章分析了多媒體系統(tǒng)中MediaScanner的工作原理。
本書適合有一定基礎(chǔ)的Android應(yīng)用開發(fā)工程師和系統(tǒng)工程師閱讀。通過對本書的學(xué)習(xí),大家將能更深刻地理解Android系統(tǒng),從而自如應(yīng)對實(shí)際開發(fā)中遇到的難題。
作者簡介
鄧凡平,資深A(yù)ndroid開發(fā)工程師,熱衷于Android源代碼的研究,對Android的架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)原理有非常深刻的認(rèn)識和理解,應(yīng)用開發(fā)經(jīng)驗(yàn)也十分豐富。目前就職于國內(nèi)一家領(lǐng)先的Android企業(yè),負(fù)責(zé)Framework的開發(fā)和維護(hù)。樂于分享,活躍于CSDN等專業(yè)社區(qū),撰寫的Android
Framework源碼的系列文章深受讀者歡迎。此外,他對Linux內(nèi)核、C/C++/Python相關(guān)的技術(shù),以及高性能網(wǎng)絡(luò)服務(wù)器和多核并行開發(fā)等也有一定的研究。
書籍目錄
第1章 閱讀前的準(zhǔn)備工作
1.1 系統(tǒng)架構(gòu)
1.1.1 Android系統(tǒng)架構(gòu)
1.1.2 本書的架構(gòu)
1.2 搭建開發(fā)環(huán)境
1.2.1 下載源碼
1.2.2 編譯源碼
1.3 工具介紹
1.3.1 Source Insight介紹
1.3.3 Busybox的使用
1.4 本章小結(jié)
第2章 深入理解JNI
2.1 JNI概述
2.2 學(xué)習(xí)JNI的實(shí)例:MediaScanner
2.3 Java層的MediaScanner分析
2.3.1 加載JNI庫
2.3.2 Java的native函數(shù)和總結(jié)
2.4 JNI層MediaScanner的分析
2.4.1 注冊JNI函數(shù)
2.4.2 數(shù)據(jù)類型轉(zhuǎn)換
2.4.3 JNIEnv介紹
2.4.4 通過JNIEnv操作jobject
2.4.5 jstring介紹
2.4.6 JNI類型簽名介紹
2.4.7 垃圾回收
2.4.8 JNI中的異常處理
2.5 本章小結(jié)
第3章 深入理解init
3.1 概述
3.2 init分析
3.2.1 解析配置文件
3.2.2 解析service
3.2.3 init控制service
3.2.4 屬性服務(wù)
3.3 本章小結(jié)
第4章 深入理解zygote
4.1 概述
4.2 zygote分析
4.2.1 AppRuntime分析
4.2.2 Welcome to Java World
4.2.3 關(guān)于zygote的總結(jié)
4.3 SystemServer分析
4.3.1 SystemServer的誕生
4.3.2 SystemServer的重要使命
4.3.3 關(guān)于 SystemServer的總結(jié)
4.4 zygote的分裂
4.4.1 ActivityManagerService發(fā)送請求
4.4.2 有求必應(yīng)之響應(yīng)請求
4.4.3 關(guān)于zygote分裂的總結(jié)
4.5 拓展思考
4.5.1 虛擬機(jī)heapsize的限制
4.5.2 開機(jī)速度優(yōu)化
4.5.3 Watchdog分析
4.6 本章小結(jié)
第5章 深入理解常見類
5.1 概述
5.2 以“三板斧”揭秘RefBase、sp和wp
5.2.1 第一板斧——初識影子對象
5.2.2 第二板斧——由弱生強(qiáng)
5.2.3 第三板斧——破解生死魔咒
5.2.4 輕量級的引用計(jì)數(shù)控制類LightRefBase
5.2.5 題外話—三板斧的來歷
5.3 Thread類及常用同步類分析
5.3.1 一個(gè)變量引發(fā)的思考
5.3.2 常用同步類
5.4 Looper和Handler類分析
5.4.1 Looper類分析
5.4.2 Handler分析
5.4.3 Looper和Handler的同步關(guān)系
5.4.4 HandlerThread介紹
5.5 本章小結(jié)
第6章 深入理解Binder
6.1 概述
6.2 庖丁解MediaServer
6.2.1 MediaServer的入口函數(shù)
6.2.2 獨(dú)一無二的ProcessState
6.2.3 時(shí)空穿越魔術(shù)—defaultServiceManager
6.2.4 注冊MediaPlayerService
6.2.5 秋風(fēng)掃落葉—StartThread Pool和join Thread Pool分析
6.2.6 你徹底明白了嗎
6.3 服務(wù)總管ServiceManager
6.3.1 ServiceManager的原理
6.3.2 服務(wù)的注冊
6.3.3 ServiceManager存在的意義
6.4 MediaPlayerService和它的Client
6.4.1 查詢ServiceManager
6.4.2 子承父業(yè)
6.5 拓展思考
6.5.1 Binder和線程的關(guān)系
6.5.2 有人情味的訃告
6.5.3 匿名Service
6.6 學(xué)以致用
6.6.1 純Native的Service
6.6.2 扶得起的“阿斗”(aidl)
6.7 本章小結(jié)
第7章 深入理解Audio系統(tǒng)
7.1 概述
7.2 AudioTrack的破解
7.2.1 用例介紹
7.2.2 AudioTrack(Java空間)分析
7.2.3 AudioTrack(Native空間)分析
7.2.4 關(guān)于AudioTrack的總結(jié)
7.3 AudioFlinger的破解
7.3.1 AudioFlinger的誕生
7.3.2 通過流程分析AudioFlinger
7.3.3 audio_track_cblk_t分析
7.3.4 關(guān)于AudioFlinger的總結(jié)
7.4 AudioPolicyService的破解
7.4.1 AudioPolicyService的創(chuàng)建
7.4.2 重回AudioTrack
7.4.3 聲音路由切換實(shí)例分析
7.4.4 關(guān)于AudioPolicy的總結(jié)
7.5 拓展思考
7.5.1 DuplicatingThread破解
7.5.2 題外話
7.6 本章小結(jié)
第8章 深入理解Surface系統(tǒng)
8.1 概述
8.2 一個(gè)Activity的顯示
8.2.1 Activity的創(chuàng)建
8.2.2 Activity的UI繪制
8.2.3 關(guān)于Activity的總結(jié)
8.3 初識Surface
8.3.1 和Surface有關(guān)的流程總結(jié)
8.3.2 Surface之乾坤大挪移
8.3.3 乾坤大挪移的JNI層分析
8.3.4 Surface和畫圖
8.3.5 初識Surface小結(jié)
8.4 深入分析Surface
8.4.1 與Surface相關(guān)的基礎(chǔ)知識介紹
8.4.2 SurfaceComposerClient分析
8.4.3 SurfaceControl分析
8.4.4 writeToParcel和Surface對象的創(chuàng)建
8.4.5 lockCanvas和unlockCanvasAndPost分析
8.4.6 GraphicBuffer介紹
8.4.7 深入分析Surface的總結(jié)
8.5 SurfaceFlinger分析
8.5.1 SurfaceFlinger的誕生
8.5.2 SF工作線程分析
8.5.3 Transaction分析
8.5.4 關(guān)于SurfaceFlinger的總結(jié)
8.6 拓展思考
8.6.1 Surface系統(tǒng)的CB對象分析
8.6.2 ViewRoot的你問我答
8.6.3 LayerBuffer分析
8.7 本章小結(jié)
第9章 深入理解Vold和Rild
9.1 概述
9.2 Vold的原理與機(jī)制分析
9.2.1 Netlink和Uevent介紹
9.2.2 初識Vold
9.2.3 NetlinkManager模塊分析
9.2.4 VolumeManager模塊分析
9.2.5 CommandListener模塊分析
9.2.6 Vold實(shí)例分析
9.2.7 關(guān)于Vold的總結(jié)
9.3 Rild的原理與機(jī)制分析
9.3.1 初識Rild
9.3.2 RIL_startEventLoop分析
9.3.3 RIL_Init分析
9.3.4 RIL_register分析
9.3.5 關(guān)于Rild main函數(shù)的總結(jié)
9.3.6 Rild實(shí)例分析
9.3.7 關(guān)于Rild的總結(jié)
9.4 拓展思考
9.4.1 嵌入式系統(tǒng)的存儲(chǔ)知識介紹
9.4.2 Rild和Phone的改進(jìn)探討
9.5 本章小結(jié)
第10章 深入理解MediaScanner
10.1 概述
10.2 android.process.media分析
10.2.1 MSR模塊分析
10.2.2 MSS模塊分析
10.2.3 android.process.media媒體掃描工作的流程總結(jié)
10.3 MediaScanner分析
10.3.1 Java層分析
10.3.2 JNI層分析
10.3.3 PVMediaScanner分析
10.3.4 關(guān)于MediaScanner的總結(jié)
10.4 拓展思考
10.4.1 MediaScannerConnection介紹
10.4.2 我問你答
10.5 本章小結(jié)
章節(jié)摘錄
版權(quán)頁:插圖:近兩年來,IT行業(yè)的最熱點(diǎn)聚焦到了移動(dòng)互聯(lián)網(wǎng)上。PC時(shí)代,WINTEL聯(lián)盟成就了英特爾和微軟各自的霸業(yè)。移動(dòng)互聯(lián)網(wǎng)時(shí)代,誰將上演新的傳奇?新生的Android當(dāng)年僅用短短一年多的時(shí)間就躋身全球智能操作系統(tǒng)的三甲行列。在北美市場,如今Android已經(jīng)超過iOS和黑莓系統(tǒng)成為老大!Android勢不可擋,ARM+Android組合的前景一片光明,越來越多的從業(yè)者加入了Android行列!與帶給人們良好用戶體驗(yàn)的iOS不一樣的是,Android是一個(gè)開放的系統(tǒng),其所有代碼都是開源的。因此,對于開發(fā)者而言,不僅可以做到知其然,更可以做到知其所以然!然而,要想知道其所以然,并不是一件簡單的事情。回想當(dāng)初,我開始接觸Android的時(shí)候,除了Android源碼外,其他資料甚少。Android是基于Linux的完整操作系統(tǒng),其代碼量讓人望而生畏??梢韵胂螅跊]有指導(dǎo)的情況下一頭扎進(jìn)操作系統(tǒng)龐大的代碼中是一件讓人多么痛苦的事情。時(shí)間過得很快,Android生態(tài)鏈已經(jīng)得到了充分的發(fā)展?,F(xiàn)在市場上的Android資料已經(jīng)開始泛濫,書籍已經(jīng)數(shù)不勝數(shù)。然而,絕大部分書籍只限于講解Android應(yīng)用的開發(fā)(拜Android應(yīng)用API所賜),沒有深入到系統(tǒng)級的探討,極少的所謂提供Android深入指導(dǎo)的資料也只是淺嘗輒止。如果想深入了解Android系統(tǒng),只有華山一條路:自己看Android源代碼!正是因?yàn)槿绱?,?dāng)初凡平告訴我他要系統(tǒng)地整理其深入鉆研Android源代碼的心得時(shí),我表示了強(qiáng)烈的贊同。這是一件極少有人做過的事情,這件事情將給已經(jīng)或即將跨入Android世界的同仁們極大的幫助!這本書里,作者以代碼框架為主線,用循序漸進(jìn)的方式將框架中的關(guān)鍵點(diǎn)一一剖開,從而給讀者一個(gè)架構(gòu)清楚、細(xì)節(jié)完善的立體展現(xiàn)。另外,凡平還會(huì)用他的幽默給正在啃枯燥代碼的您帶來不少笑意和輕松。毫無疑問,如果您想深入了解Android系統(tǒng),這本書就是您進(jìn)入Android神秘世界的鑰匙。如果您看準(zhǔn)了移動(dòng)互聯(lián)網(wǎng)的前景,想深入理解Android,那就讓這本書指導(dǎo)您前進(jìn)吧!
媒體關(guān)注與評論
作者是Thundersoft多媒體組的牛人,技術(shù)精深,樂于分享,對Android系統(tǒng)有真正的理解?!渡钊肜斫釧ndroid:卷1》內(nèi)容給力,語言生動(dòng),全書沒有一句廢話,各章中的“拓展思考”尤為精彩,體現(xiàn)了作者對Android實(shí)現(xiàn)原理的深入理解和批判性思考。為什么Android的短信群發(fā)很慢?為什么拔出SD卡時(shí)有的程序會(huì)退出?讀者都能從本書中找到諸如此類的各種實(shí)際問題的答案。更重要的是,讀者能夠?qū)ndroid的整個(gè)體系有一個(gè)全新的理解。如果你通讀了這本書,請一定投一份簡歷給我們?! 猅hundersoft(中科創(chuàng)達(dá)軟件科技(北京)有限公司)對于Android開發(fā)工程師而言,本書不可多得,分析透徹深入,針對性極強(qiáng)。Android系統(tǒng)本身極為龐大,如果要對整個(gè)系統(tǒng)進(jìn)行面面俱到且細(xì)致入微地分析,恐怕不是一兩本書能完成的。本書從開發(fā)者的實(shí)際需求出發(fā),有針對性地對Android系統(tǒng)中的重要知識點(diǎn)和功能模塊的源代碼實(shí)現(xiàn)進(jìn)行了剖析,這樣既能幫助開發(fā)者解決實(shí)際問題,又能使分析深入透徹,而不是停留于表面。強(qiáng)烈推薦! ——機(jī)鋒網(wǎng)這本書非常實(shí)用,絕不是枯燥的源代碼分析,是深入理解Android工作機(jī)制和實(shí)現(xiàn)原理的一本好書。為什么說它實(shí)用呢?因?yàn)樗淖罱K目的并不是停留著源代碼分析上,而是要幫助開發(fā)者解決實(shí)際問題,于是所有知識點(diǎn)的分析和講解都是從開發(fā)者的實(shí)際需求出發(fā)的。與一般的源代碼分析的書相比較而言,本書在語言上多了幾分幽默,更加生動(dòng)易懂。更重要的是,本書的分析十分深入,探討了Android相關(guān)功能模塊的本質(zhì)。 ——51CTO移動(dòng)開發(fā)頻道隨著Android 系統(tǒng)越來越流行,Android應(yīng)用的需求也在不斷變化,對于開發(fā)者而言,深入理解Android系統(tǒng)原理顯得越來越重要。目前市面上Android 開發(fā)相關(guān)的圖書已經(jīng)很多,但真正能夠系統(tǒng)、深入地講解Android系統(tǒng)原理的書還乏善可陳。這本書的出版恰逢其時(shí),該書同時(shí)兼?zhèn)渖疃群蛷V度,以循序漸進(jìn)的方式,優(yōu)雅的語言,深入分析到各個(gè)模塊的源碼與原理。另外,它啟發(fā)性的講解方式,更有助于讀者的學(xué)習(xí)和思考?! _源中國社區(qū)
編輯推薦
《深入理解Android(卷1)》:結(jié)合實(shí)際應(yīng)用開發(fā)需求,以情景分析的方式有針對性地對Android的源代碼進(jìn)行了十分詳盡的剖析,深刻揭示Android系統(tǒng)的工作原理。機(jī)鋒網(wǎng)、51CTO、開源中國社區(qū)等專業(yè)技術(shù)網(wǎng)站一致鼎力推薦!在Android領(lǐng)域,無論是從事上層的應(yīng)用開發(fā).還是從事底層的系統(tǒng)級開發(fā),如果想成為一名優(yōu)秀的開發(fā)者,通過深入探究Android的源代碼來了解Android的實(shí)現(xiàn)原理與工作機(jī)制也許是唯一的捷徑。Android Framework是Android系統(tǒng)的基石,也是Android的核心之一,對于上層的應(yīng)用開發(fā)者而言,深入理解它的工作原理是十分有必要的。Java世界是如何通過Zygote創(chuàng)建的?Handler和Looper是如何工作的?Binder的工作原理是什么?Audio系統(tǒng)和Surface系統(tǒng)的工作流程是怎樣的?Vold、Rild、MediaScanner等是如何實(shí)現(xiàn)的?這些內(nèi)容是每一位從事Android應(yīng)用開發(fā)的程序員都需要學(xué)習(xí)和掌握的?!渡钊肜斫釧ndroid(卷1)》用情景分析的方式對Android的源代碼進(jìn)行了有針對性的分析,不僅全面而詳細(xì)地分析了Framework層的工作機(jī)制和實(shí)現(xiàn)原理,而且還涉及Native層和Application層的重要內(nèi)容。每一個(gè)功能模塊的分析都從實(shí)際的使用場景和具體的問題入手,每一個(gè)知識點(diǎn)都力求做到把實(shí)現(xiàn)原理講清楚,把工作機(jī)制說明白,盡量深入.竭力避免泛泛而談。除此之外,《深入理解Android(卷1)》在重要章節(jié)還精心設(shè)計(jì)了“拓展思考”的內(nèi)容,旨在進(jìn)一步激發(fā)讀者學(xué)習(xí)和研究Android源代碼的興趣。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載