出版時間:2011-6 出版社:機械工業(yè)出版社 作者:楊豐盛 頁數(shù):546
Tag標簽:無
前言
前言經(jīng)過三年的發(fā)展,Android已經(jīng)從最初的智能電話領(lǐng)域逐漸進入教育、醫(yī)療、軍事、汽車、家居等重要領(lǐng)域。它一路披荊斬棘,攻城拔寨,發(fā)展勢頭有目共睹,已經(jīng)成為移動平臺領(lǐng)域當之無愧的王者。目前,已有眾多設備開始選擇使用Android系統(tǒng),比如智能手機、智能電視、平板電腦、上網(wǎng)本、MP3、MP4、智能相機等;相信在不久的未來,還將有更多采用Android系統(tǒng)的高科技產(chǎn)品進入我們的生活。這些設備將產(chǎn)生各種各樣的應用需求,尤其是與Android系統(tǒng)底層相關(guān)的應用,這將給開發(fā)者帶來大量的機會,尤其是系統(tǒng)級應用開發(fā)工程師。Android基于Linux內(nèi)核,但它并不是標準的Linux。因為Google為了讓Android更適合移動手持設備,對Linux內(nèi)核進行了各種優(yōu)化和增強,這些增強的部分也正是從事Android系統(tǒng)開發(fā)的嵌入式系統(tǒng)工程師所急需了解的內(nèi)容;同時Android的源代碼不僅復雜,而且代碼量巨大,各模塊之間聯(lián)系緊密。這讓大多數(shù)Android應用開發(fā)者不知從何處入手,他們都希望能夠有一本系統(tǒng)且全面的,對Android內(nèi)核的構(gòu)架和實現(xiàn)原理進行分析的書,而國內(nèi)目前分析Android底層實現(xiàn)的書籍甚少。因此,筆者對自身的實戰(zhàn)經(jīng)驗進行了總結(jié)和整理,編寫了本書,希望能夠幫助眾多Android應用開發(fā)者更快、更深入地理解Android各個部分的具體實現(xiàn),從而為開發(fā)各種系統(tǒng)級的應用做好準備。本書分為兩卷,系統(tǒng)卷和應用卷。系統(tǒng)卷主要分析Android系統(tǒng)層的實現(xiàn),包括Android系統(tǒng)構(gòu)架中的下面三層:Linux內(nèi)核層、硬件抽象層、系統(tǒng)運行庫層;應用卷介紹Android系統(tǒng)構(gòu)架中的上面兩層,重在分析Android應用層的實現(xiàn),包括應用程序框架層和應用層。具體如圖1所示:圖1Android系統(tǒng)構(gòu)架①圖中Linux內(nèi)核(Kernel)部分是本書系統(tǒng)卷第一部分的內(nèi)容,主要分析Android的核心驅(qū)動程序的實現(xiàn),包括驅(qū)動程序的系統(tǒng)構(gòu)架、原理和實現(xiàn)。掌握這部分內(nèi)容后,讀者將能夠修改和編寫Android的各個設備驅(qū)動程序。緊接著上面則是硬件抽象層,本書第7章通過大量篇幅深入分析了Android中各個模塊的硬件抽象層實現(xiàn),使讀者在掌握Android中已有的硬件設備接口實現(xiàn)的同時,能夠獨立編寫適合自己的硬件設備驅(qū)動的抽象層接口。圖中的Libraries部分即本書的第6章,分析了Android的系統(tǒng)庫、程序庫和功能庫的具體實現(xiàn),它能讓讀者在理解Android的各種功能的底層實現(xiàn)的同時,還能按照功能需求進行擴展和優(yōu)化。最后,圖中的Android運行時(Runtime)部分又分為Dalvik虛擬機和核心庫兩部分,分別在本書的第8章和第9章介紹,剖析了Dalvik虛擬機的構(gòu)架與實現(xiàn),以及Android核心庫和API的運作機制,使讀者能夠完成Android運行庫的移植和修改。本書面向的讀者本書(系統(tǒng)卷)主要分析了Android系統(tǒng)底層的構(gòu)架與實現(xiàn)原理,從源代碼的獲取和系統(tǒng)開發(fā)環(huán)境的搭建,到Android Kernel的核心實現(xiàn),再到硬件抽象層和Android運行庫等各個模塊的細節(jié)實現(xiàn),讓讀者可以從更深的層次去理解Android的系統(tǒng)構(gòu)架,并對Android系統(tǒng)進行移植和二次開發(fā)。閱讀本書的一個必要條件是對Linux內(nèi)核有一定了解,因此本書(系統(tǒng)卷)非常適合以下開發(fā)人員閱讀:Android系統(tǒng)開發(fā)/移植工程師Android驅(qū)動開發(fā)/移植工程師Android系統(tǒng)構(gòu)架師嵌入式系統(tǒng)工程師應用卷則重在分析Android的應用層和應用程序框架層的運作機制,從基礎的應用程序剖析入手,到應用程序API的實現(xiàn),再到各模塊的原理,讓讀者對Android有更深入、更全面的認識,同時結(jié)合商業(yè)案例的分析,讓讀者不僅能使用API開發(fā)應用,更能對API功能進行擴展,從而滿足開發(fā)中的各種需求。因此,應用卷非常適合以下人員閱讀:Android應用開發(fā)/移植工程師Android游戲開發(fā)/移植工程師Android構(gòu)架師如何閱讀本書在編寫本書之前,筆者收到很多《Android應用開發(fā)揭秘》一書的讀者發(fā)來的郵件,他們都希望有一本能深入講解Android實現(xiàn)原理的書籍,因此編寫了本書,旨在幫助眾多開發(fā)者晉級。本書分為兩冊,如果是進行系統(tǒng)級開發(fā),建議閱讀本卷;如果是進行應用開發(fā),建議閱讀應用卷。本書是以Android源碼為基礎進行分析的,因為源碼內(nèi)容很多,不能全部列出來,因此筆者建議在閱讀本書的同時,最好能對照查看Android的源碼實現(xiàn)(本書的所有代碼清單都指明了它在源碼中的路徑,以方便大家查看);另外,本書中有多處標記為“注意”、“擴展學習”的內(nèi)容,都是一些實戰(zhàn)經(jīng)驗。最后,雖然Android的各部分聯(lián)系緊密,但各個部分的講解都較為完整,大家仍然可以根據(jù)需要調(diào)整閱讀順序。致謝感謝所有在本書寫作過程中給予過我指導、幫助和鼓勵的朋友,尤其是本書的策劃編輯楊福川,他不僅對本書提出了寶貴的寫作建議,而且還和他的同事曾珊對書稿進行了仔細的審閱。感謝一直以來信任、鼓勵和支持我的父母和其他親人。最后還要感謝我的女友,正是你的愛與支持,才使我有了今天的收獲。雖然我熱切地希望與廣大讀者朋友分享Android系統(tǒng)的底層實現(xiàn)技術(shù),但由于時間有限,書中難免存在疏漏與錯誤,誠懇地希望各位讀者批評和指正。如果發(fā)現(xiàn)書中有任何問題,或是想與我交流關(guān)于Android開發(fā)的相關(guān)話題,歡迎通過Android.Yarin@gmail.com與我聯(lián)系。希望能結(jié)識更多的朋友,大家共同進步。一般而言,Android系統(tǒng)在構(gòu)架上分為4層,分別為:應用層、應用框架層、系統(tǒng)運行庫層和Linux內(nèi)核層;為了使分析更加深入透徹,本書將系統(tǒng)運行庫層和Linux內(nèi)核層之間與硬件及其驅(qū)動相關(guān)的內(nèi)容單獨劃分為一層——硬件抽象層。
內(nèi)容概要
《Android技術(shù)內(nèi)幕:系統(tǒng)卷》是國內(nèi)首本系統(tǒng)對Android的源代碼進行深入分析的著作。全書將Android系統(tǒng)從構(gòu)架上依次分為應用層、應用框架層、系統(tǒng)運行庫層、硬件抽象層和Linux內(nèi)核層等5個層次,旨在通過對Android系統(tǒng)源代碼的全面分析來幫助開發(fā)者加深對Android系統(tǒng)架構(gòu)設計和實現(xiàn)原理的認識,從而幫助他們解決開發(fā)中遇到的更加復雜的問題。
全書分為兩卷,系統(tǒng)卷主要分析了Linux內(nèi)核層、硬件抽象層和系統(tǒng)運行庫層的各個模塊的底層原理和實現(xiàn)細節(jié);應用卷主要分析了應用層和應用框架層的各個模塊的底層原理和實現(xiàn)細節(jié)。
具體而言,系統(tǒng)卷第1章首先從宏觀上介紹了Android系統(tǒng)的架構(gòu)以及各個層次之間的關(guān)系,然后介紹了如何獲取Android源代碼并搭建Android源代碼開發(fā)環(huán)境和閱讀環(huán)境的方法;第2章有針對性地剖析了Android的內(nèi)核機制和結(jié)構(gòu),以及Android對Linux內(nèi)核的改動和增強;第3章分析了Binder的架構(gòu)和工作機制,以及Binder驅(qū)動的實現(xiàn)原理;第4章分析了Android電源管理模塊的機制與實現(xiàn);第5章全面地剖析了Android硬件設備驅(qū)動(顯示、視頻、音頻、MTD、Event、藍牙、WLAN等)的工作原理和實現(xiàn),掌握這部分內(nèi)容即可修改和編寫基于Android的設備驅(qū)動程序;第6章深刻闡述了Android原生庫的原理及實現(xiàn),涉及系統(tǒng)C庫、功能庫、擴展庫和原生的Server等重要內(nèi)容;第7章系統(tǒng)地講解了硬件抽象層的原理與實現(xiàn),掌握這部分內(nèi)容即可編寫適合特定硬件設備驅(qū)動的抽象層接口;第8章和第9章是對系統(tǒng)運行庫層的分析,主要講解了Dalvik虛擬機的架構(gòu)、原理與實現(xiàn),以及Android的核心庫相關(guān)的知識,掌握這部分內(nèi)容即可完成對Android運行庫的移植和修改。
本書適合所有的高級Android應用開發(fā)工程師、Android系統(tǒng)開發(fā)工程師、Android移植工程師、Android系統(tǒng)架構(gòu)師和所有對Android源碼實現(xiàn)感興趣的讀者。
作者簡介
楊豐盛,國內(nèi)Android領(lǐng)域的先驅(qū)者和布道者,資深Android開發(fā)工程師,在Android應用開發(fā)方面有豐富的實戰(zhàn)經(jīng)驗。他對Android的源代碼進行了長達一年的系統(tǒng)學習和研究,對Android系統(tǒng)的架構(gòu)設計和實現(xiàn)原理有非常深入的理解和認識,理論功底也十分深厚。國內(nèi)著名IT技術(shù)網(wǎng)站51CTO推薦技術(shù)專家,曾多次接受《程序員》雜志采訪并為其撰稿,同時他還多次應邀在國內(nèi)的移動開發(fā)者大會和技術(shù)沙龍中開展講座,深受歡迎。他還是暢銷書作家,撰寫的《Android應用開發(fā)揭秘》一書是目前Android領(lǐng)域口碑最好、銷量也最好的一本書之一,這本書自上市以來已經(jīng)重印9次,而且銷量一直排在當當網(wǎng)、卓越網(wǎng)和互動網(wǎng)這3大網(wǎng)店的計算機類圖書的排行榜前列。
此外,他還精通Java、C、C++等語言,在機頂盒軟件開發(fā)和MTK平臺軟件開發(fā)方面有非常豐富的經(jīng)驗。游戲開發(fā)也是他的專長,曾經(jīng)參與過《三國群英傳說》、《大航海傳奇》、《養(yǎng)成計劃》等游戲的開發(fā),2007年榮獲中國軟件行業(yè)協(xié)會游戲軟件分會(CGIA)認證及國際游戲開發(fā)教育聯(lián)合會國際認證。
書籍目錄
前言
第1章 準備工作
1.1 深入認識Android
1.1.1 Android的系統(tǒng)構(gòu)架
1.1.2 Android的初始化流程
1.1.3 各個層次之間的相互關(guān)系
1.1.4 Android系統(tǒng)開發(fā)(移植)和應用開發(fā)
1.2 獲取和編譯Android的源碼
1.2.1 環(huán)境配置
1.2.2 獲取Android源碼
1.2.3 編譯Android的源碼及其工具包
1.2.4 運行Android系統(tǒng)
1.3 開發(fā)環(huán)境搭建
1.3.1 應用開發(fā)環(huán)境搭建
1.3.2 源碼開發(fā)環(huán)境搭建
1.4 Android源碼結(jié)構(gòu)
1.5 小結(jié)
第2章 Android的內(nèi)核機制和結(jié)構(gòu)剖析
2.1 Linux與Android的關(guān)系
2.1.1 為什么會選擇Linux
2.1.2 Android不是Linux
2.2 Android對Linux內(nèi)核的改動
2.2.1 Goldfish
2.2.2 YAFFS2
2.2.3 藍牙
2.2.4 調(diào)度器(Scheduler)
2.2.5 Android新增的驅(qū)動
2.2.6 電源管理
2.2.7 雜項
2.3 Android對Linux內(nèi)核的增強
2.3.1 Alarm(硬件時鐘)
2.3.2 Ashmem(匿名內(nèi)存共享)
2.3.3 Low Memory
2.3.4 Logger(日志設備)
2.3.5 Android PMEM
2.3.6 switch
2.3.7 Timed GPIO
2.3.8 Android Ram
2.4 小結(jié)
第3章 Android的IPC機制--Binder
3.1 Binder概述
3.1.1 為什么選擇Binder
3.1.2 初識Binder
3.2 Binder驅(qū)動的原理和實現(xiàn)
3.2.1 Binder驅(qū)動的原理
3.2.2 Binder驅(qū)動的實現(xiàn)
3.3 Binder的構(gòu)架與實現(xiàn)
3.3.1 Binder的系統(tǒng)構(gòu)架
3.3.2 Binder的機制和原理
3.4 小結(jié)
第4章 電源管理
4.1 電源管理概述
4.2 電源管理結(jié)構(gòu)
4.3 Android的電源管理機制
4.4 Android電源管理機制的實現(xiàn)
4.5 小結(jié)
第5章 驅(qū)動的工作原理及實現(xiàn)機制
5.1 顯示驅(qū)動(Framebuffer)
5.1.1 Framebuffer的工作原理
5.1.2 Framebuffer的構(gòu)架
5.1.3 Framebuffer驅(qū)動的實現(xiàn)機制
5.2 視頻驅(qū)動(V4L和V4L2)
5.2.1 V4L2介紹
5.2.2 V4L2的原理和構(gòu)架
5.2.3 V4L2的實現(xiàn)
5.3 音頻驅(qū)動(OSS和ALSA)
5.3.1 OSS與ALSA介紹
5.3.2 OSS的構(gòu)架與實現(xiàn)
5.3.3 ALSA的構(gòu)架與實現(xiàn)
5.4 MTD驅(qū)動
5.4.1 MTD驅(qū)動的功能
5.4.2 MTD驅(qū)動的構(gòu)架
5.4.3 MTD驅(qū)動的原理及實現(xiàn)
5.5 Event輸入設備驅(qū)動
5.5.1 Input的系統(tǒng)構(gòu)架
5.5.2 Event輸入驅(qū)動的構(gòu)架
5.5.3 Event輸入驅(qū)動的原理
5.5.4 Event輸入驅(qū)動的實現(xiàn)
5.6 藍牙驅(qū)動(Bluetooth)
5.6.1 Bluetooth驅(qū)動的構(gòu)架
5.6.2 BlueZ的原理及實現(xiàn)
5.7 WLAN驅(qū)動(Wi-Fi)/244
5.7.1 WLAN構(gòu)架
5.7.2 Wi-Fi驅(qū)動的實現(xiàn)原理
5.8 小結(jié)
第6章 原生庫的原理及實現(xiàn)
6.1 系統(tǒng)C庫(Bionic Libc)
6.1.1 Bionic Libc功能概述
6.1.2 Bionic Libc實現(xiàn)原理
6.2 功能庫
6.2.1 WebKit構(gòu)架與實現(xiàn)
6.2.2 多媒體框架與實現(xiàn)
6.2.3 Android SQLite框架及原理
6.3 擴展庫
6.3.1 Skia底層庫分析
6.3.2 OpenGL底層庫分析
6.3.3 Android-OpenSSL實現(xiàn)及運用
6.3.4 FreeType及Font Engine
6.3.5 FreeType結(jié)構(gòu)體系和渲染流程
6.4 原生服務
6.4.1 AudioFlinger實現(xiàn)
6.4.2 SurfaceFlinger實現(xiàn)
6.5 小結(jié)
第7章 硬件抽象層的原理與實現(xiàn)
7.1 硬件抽象層的實現(xiàn)原理
7.1.1 Android HAL構(gòu)架
7.1.2 Android HAL的實現(xiàn)
7.2 Android Overlay構(gòu)架與實現(xiàn)
7.2.1 Android Overlay系統(tǒng)構(gòu)架
7.2.2 Overlay HAL框架與實現(xiàn)
7.2.3 Overlay與SurfaceFinger
7.3 Android Camera
7.3.1 Android Camera系統(tǒng)構(gòu)架
7.3.2 Camera HAL框架與實現(xiàn)
7.3.3 Camera本地實現(xiàn)
7.4 Android Audio
7.4.1 Audio HAL框架
7.4.2 Android默認的Audio HAL實現(xiàn)
7.4.3 DUMP功能的Audio HAL實現(xiàn)
7.4.4 基于A2dp的藍牙音頻設備HAL實現(xiàn)
7.4.5 模擬器上的Audio HAL實現(xiàn)
7.5 Android RIL實現(xiàn)
7.5.1 Android RIL構(gòu)架
7.5.2 radiooptiongs實現(xiàn)
7.5.3 libril庫實現(xiàn)
7.5.4 reference-ril庫實現(xiàn)
7.5.5 RILD守護進程實現(xiàn)
7.5.6 request流程分析
7.5.7 response流程分析
7.6 Android Sensor
7.6.1 Android Sensor構(gòu)建
7.6.2 Sensor HAL接口
7.6.3 Sensor HAL實現(xiàn)
7.7 Android WIFI
7.7.1 Android WIFI系統(tǒng)構(gòu)架
7.7.2 wpa_supplicant框架
7.7.3 WIFI HAL實現(xiàn)
7.8 Android藍牙本地實現(xiàn)
7.8.1 Android藍牙構(gòu)架
7.8.2 BlueZ結(jié)構(gòu)體系
7.8.3 BlueZ適配層
7.9 Android 定位實現(xiàn)
7.9.1 定位系統(tǒng)構(gòu)架
7.9.2 GPS HAL實現(xiàn)
7.10 Android Power
7.11 Android Vibrator
7.12 小結(jié)
第8章 Dalvik虛擬機的構(gòu)架、原理與實現(xiàn)
8.1 Dalvik虛擬機概述
8.1.1 什么是Dalvik虛擬機
8.1.2 Dalvik虛擬機的功能
8.1.3 Dalvik虛擬機與Java虛擬機的區(qū)別
8.2 Dalvik構(gòu)架與實現(xiàn)
8.2.1 Dalvik系統(tǒng)構(gòu)架
8.2.2 dx和dexdump工具
8.2.3 .dex文件格式解析
8.2.4 Dalvik內(nèi)部機制
8.2.5 Dalvik進程管理
8.2.6 Dalvik內(nèi)存管理
8.2.7 Dalvik加載器
8.2.8 Dalvik解釋器
8.2.9 Dalvik JIT
8.3 JNI的構(gòu)架與實現(xiàn)
8.3.1 JNI構(gòu)架
8.3.2 JNI實現(xiàn)
8.4 小結(jié)
第9章 Android 核心庫
9.1 Android核心庫簡介
9.2 Android系統(tǒng)API
9.2.1 android包
9.2.2 android資源包
9.2.3 ApiCheck機制
9.3 小結(jié)
后記
媒體關(guān)注與評論
《Android技術(shù)內(nèi)幕:系統(tǒng)卷》是Android開發(fā)者不可不看的一本翔實、全面、深入的Android著作,對Android系統(tǒng)的源代碼進行了全面的分析,不愧為“技術(shù)內(nèi)幕”,強烈推薦!——機鋒網(wǎng)毫無疑問,移動開發(fā)是軟件開發(fā)領(lǐng)域當下最熱門的話題之一,其中Android開發(fā)又是移動開發(fā)領(lǐng)域的焦點。目前市面上關(guān)于Android開發(fā)的書很多,但是從源代碼角度系統(tǒng)分析Android架構(gòu)設計與實現(xiàn)原理的書卻沒有,本書填補了市場空白。本書有兩大特點:宏觀上足夠有高度,Android系統(tǒng)的五層架構(gòu)一覽無余;微觀上足夠有深度,對Android系統(tǒng)的Linux內(nèi)核層、硬件抽象層和系統(tǒng)運行庫層得各個模塊的實現(xiàn)原理進行了深入的分析。這是一本難得的經(jīng)典之作,強烈推薦!——51CTO移動開發(fā)頻道無論是移動設備的數(shù)量、開發(fā)者的數(shù)量,還是是應用程序的數(shù)量,Android均已超過iOS,可謂勢不可擋。目前絕大部分的Android應用都運行于手機和平板電腦等智能移動終端上,但是Android逐漸開始被工業(yè)領(lǐng)域的一些設備所采用,開發(fā)者將面臨更加復雜的應用環(huán)境,這要求開發(fā)者對Android系統(tǒng)有更深入的理解。本書的出版可謂恰逢其時,是開發(fā)者系統(tǒng)學習Android系統(tǒng)原理的寶貴資料,也是目前唯一可參考的中文資料。不可錯過!——AOA(傲卓網(wǎng))如果你是一位高級Android應用開發(fā)工程師,或者是一位Android系統(tǒng)開發(fā)工程師,或者是一位Android移植工程師,再或者是一位Android應用架構(gòu)師,本書對你來說將非常有價值。它對Android系統(tǒng)的Linux內(nèi)核層、硬件抽象層和系統(tǒng)運行庫層的各模塊的進行了細致入微地分析,足以幫你解決平時開發(fā)過程中遇到的與系統(tǒng)底層相關(guān)度的難題。極力推薦!——Andriod開發(fā)者社區(qū)自Android在國內(nèi)普及以來,市面上關(guān)于Android的圖書如雨后春筍般涌現(xiàn),但是大多數(shù)圖書都是引領(lǐng)讀者入門的,重在講解Android上層的框架及其使用,真正從底層去分析和闡述Android架構(gòu)設計與實現(xiàn)原理的書屈指可數(shù),本書恰好是這方面的一本佳作。如果想了解Android的整體結(jié)構(gòu)和底層原理,這本書請不要錯過!——姚尚朗(IceskYsl) eoeAndroid社區(qū)創(chuàng)始人兼CTO/暢銷書作家
編輯推薦
《Android技術(shù)內(nèi)幕:系統(tǒng)卷》編輯推薦:完全立足于Android系統(tǒng)源代碼,深入解析Android內(nèi)核的架構(gòu)設計與實現(xiàn)原理,透徹分析Android內(nèi)核層、硬件抽象層和系統(tǒng)運行庫層的各功能模塊的底層機制?!禔ndroid技術(shù)內(nèi)幕:系統(tǒng)卷》適合所有的高級Android應用開發(fā)工程師、Android系統(tǒng)開發(fā)工程師、Android移植工程師、Android系統(tǒng)架構(gòu)師和所有對Android源碼實現(xiàn)感興趣的讀者。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載