Android技術內幕:系統卷

Android技術內幕:系統卷

《Android技術內幕系統卷》是由機械工業出版社出版的圖書,作者是楊豐盛。

基本信息

內容簡介

Android技術內幕:系統卷

Android技術內幕:系統卷》是國內首本系統對Android的原始碼進行深入分析的著作。全書將Android系統從構架上依次分為套用層、套用框架層、系統運行庫層、硬體抽象層和Linux核心層等5個層次,旨在通過對Android系統原始碼的全面分析來幫助開發者加深對Android系統架構設計和實現原理的認識,從而幫助他們解決開發中遇到的更加複雜的問題。

《Android技術內幕:系統卷》分為兩卷,系統卷主要分析了Linux核心層、硬體抽象層和系統運行庫層的各個模組的底層原理和實現細節;套用卷主要分析了套用層和套用框架層的各個模組的底層原理和實現細節。

具體而言,系統卷第1章首先從巨觀上介紹了Android系統的架構以及各個層次之間的關係,然後介紹了如何獲取Android原始碼並搭建Android原始碼開發環境和閱讀環境的方法;第2章有針對性地剖析了Android的核心機制和結構,以及Android對Linux核心的改動和增強;第3章分析了Binder的架構和工作機制,以及Binder驅動的實現原理;第4章分析了Android電源管理模組的機制與實現;第5章全面地剖析了Android硬體設備驅動(顯示、視頻、音頻、MTD、Event、藍牙、WLAN等)的工作原理和實現,掌握這部分內容即可修改和編寫基於Android的設備驅動程式;第6章深刻闡述了Android原生庫的原理及實現,涉及系統C庫、功能庫、擴展庫和原生的Server等重要內容;第7章系統地講解了硬體抽象層的原理與實現,掌握這部分內容即可編寫適合特定硬體設備驅動的抽象層接口;第8章和第9章是對系統運行庫層的分析,主要講解了Dalvik虛擬機的架構、原理與實現,以及Android的核心庫相關的知識,掌握這部分內容即可完成對Android運行庫的移植和修改。

編輯推薦

《Android技術內幕:系統卷》編輯推薦:完全立足於Android系統原始碼,深入解析Android核心的架構設計與實現原理,透徹分析Android核心層、硬體抽象層和系統運行庫層的各功能模組的底層機制。《Android技術內幕:系統卷》適合所有的高級Android套用開發工程師、Android系統開發工程師、Android移植工程師、Android系統架構師和所有對Android源碼實現感興趣的讀者。

媒體推薦

《Android技術內幕:系統卷》是Android開發者不可不看的一本翔實、全面、深入的Android著作,對Android系統的原始碼進行了全面的分析,不愧為“技術內幕”,強烈推薦!

——機鋒網

毫無疑問,移動開發是軟體開發領域當下最熱門的話題之一,其中Android開發又是移動開發領域的焦點。目前市面上關於Android開發的書很多,但是從原始碼角度系統分析Android架構設計與實現原理的書卻沒有,本書填補了市場空白。本書有兩大特點:巨觀上足夠有高度,Android系統的五層架構一覽無餘;微觀上足夠有深度,對Android系統的Linux核心層、硬體抽象層和系統運行庫層得各個模組的實現原理進行了深入的分析。這是一本難得的經典之作,強烈推薦!

——51CTO移動開發頻道

無論是移動設備的數量、開發者的數量,還是是應用程式的數量,Android均已超過iOS,可謂勢不可擋。目前絕大部分的Android套用都運行於手機和平板電腦等智慧型移動終端上,但是Android逐漸開始被工業領域的一些設備所採用,開發者將面臨更加複雜的套用環境,這要求開發者對Android系統有更深入的理解。本書的出版可謂恰逢其時,是開發者系統學習Android系統原理的寶貴資料,也是目前唯一可參考的中文資料。不可錯過!

——AOA(傲卓網)

如果你是一位高級Android套用開發工程師,或者是一位Android系統開發工程師,或者是一位Android移植工程師,再或者是一位Android套用架構師,本書對你來說將非常有價值。它對Android系統的Linux核心層、硬體抽象層和系統運行庫層的各模組的進行了細緻入微地分析,足以幫你解決平時開發過程中遇到的與系統底層相關度的難題。極力推薦!

——Andriod開發者社區

自Android在國內普及以來,市面上關於Android的圖書如雨後春筍般湧現,但是大多數圖書都是引領讀者入門的,重在講解Android上層的框架及其使用,真正從底層去分析和闡述Android架構設計與實現原理的書屈指可數,本書恰好是這方面的一本佳作。如果想了解Android的整體結構和底層原理,這本書請不要錯過!

——姚尚朗(IceskYsl) eoeAndroid社區創始人兼CTO/暢銷書作家

作者簡介

楊豐盛,國內Android領域的先驅者和布道者,資深android開發工程師,在Android套用開發方面有豐富的實戰經驗。他對Android的原始碼進行了長達一年的系統學習和研究,對Android系統的架構設計和實現原理有非常深入的理解和認識,理論功底也十分深厚。國內著名IT技術網站51CTO推薦技術專家,曾多次接受《程式設計師》雜誌採訪並為其撰稿,同時他還多次應邀在國內的移動開發者大會和技術沙龍中開展講座,深受歡迎。他還是暢銷書作家,撰寫的《Android套用開發揭秘》一書是目前Android領域口碑最好、銷量也最好的一本書之一,這本書自上市以來已經重印9次,而且銷量一直排在噹噹網、卓越網和互動網這3大網店的計算機類圖書的排行榜前列。

此外,他還精通Java、C、C++等語言,在機頂盒軟體開發和MTK平台軟體開發方面有非常豐富的經驗。遊戲開發也是他的專長,曾經參與過《三國群英傳說》、《大航海傳奇》、《養成計畫》等遊戲的開發,2007年榮獲中國軟體行業協會遊戲軟體分會(CGIA)認證及國際遊戲開發教育聯合會國際認證。

目錄

前言

第1章 準備工作 /1

1.1 深入認識Android /2

1.1.1 Android的系統構架 /2

1.1.2 Android的初始化流程 /5

1.1.3 各個層次之間的相互關係 /8

1.1.4 Android系統開發(移植)和套用開發 /11

1.2 獲取和編譯Android的源碼 /13

1.2.1 環境配置 /13

1.2.2 獲取Android源碼 /14

1.2.3 編譯Android的源碼及其工具包 /16

1.2.4 運行Android系統 /21

1.3 開發環境搭建 /23

1.3.1 套用開發環境搭建 /23

1.3.2 源碼開發環境搭建 /26

1.4 Android源碼結構 /32

1.5 小結 /33

第2章 Android的核心機制和結構剖析 /34

2.1 Linux與Android的關係 /35

2.1.1 為什麼會選擇Linux /35

2.1.2 Android不是Linux /35

2.2 Android對Linux核心的改動 /37

2.2.1goldfish/37

2.2.2 YAFFS2 /38

2.2.3 藍牙 /39

2.2.4 調度器(Scheduler)/39

2.2.5 Android新增的驅動 /40

2.2.6 電源管理 /41

2.2.7 雜項 /41

2.3 Android對Linux核心的增強 /42

2.3.1 Alarm(硬體時鐘)/43

2.3.2 Ashmem(匿名記憶體共享)/46

2.3.3 Low Memory Killer(低記憶體管理)/52

2.3.4 Logger(日誌設備)/56

2.3.5 Android PMEM /65

2.3.6 switch /79

2.3.7 Timed GPIO /88

2.3.8 Android Ram Console /94

2.4 小結 /99

第3章 Android的IPC機制--Binder /100

3.1 Binder概述 /101

3.1.1 為什麼選擇Binder /101

3.1.2 初識Binder /102

3.2 Binder驅動的原理和實現 /102

3.2.1 Binder驅動的原理 /102

3.2.2 Binder驅動的實現 /103

3.3 Binder的構架與實現 /132

3.3.1 Binder的系統構架 /132

3.3.2 Binder的機制和原理 /133

3.4 小結 /150

第4章 電源管理 /151

4.1 電源管理概述 /152

4.2 電源管理結構 /152

4.3 Android的電源管理機制 /153

4.4 Android電源管理機制的實現 /154

4.5 小結 /187

第5章 驅動的工作原理及實現機制 /188

5.1 顯示驅動(FrameBuffer)/189

5.1.1 Framebuffer的工作原理 /189

5.1.2 Framebuffer的構架 /190

5.1.3 Framebuffer驅動的實現機制 /190

5.2視頻驅動V4L和V4L2)/201

5.2.1 V4L2介紹 /201

5.2.2 V4L2的原理和構架 /201

5.2.3 V4L2的實現 /202

5.3 音頻驅動(OSS和ALSA)/208

5.3.1 OSS與ALSA介紹 /208

5.3.2 OSS的構架與實現 /209

5.3.3 ALSA的構架與實現 /213

5.4 MTD驅動 /214

5.4.1 MTD驅動的功能 /214

5.4.2 MTD驅動的構架 /215

5.4.3 MTD驅動的原理及實現 /215

5.5 Event輸入設備驅動 /223

5.5.1 Input的系統構架 /223

5.5.2 Event輸入驅動的構架 /224

5.5.3 Event輸入驅動的原理 /224

5.5.4 Event輸入驅動的實現 /225

5.6 藍牙驅動(Bluetooth)/235

5.6.1 Bluetooth驅動的構架 /235

5.6.2BlueZ的原理及實現 /237

5.7 WLAN驅動(Wi-Fi)/244

5.7.1 WLAN構架 /244

5.7.2 Wi-Fi驅動的實現原理 /245

5.8 小結 /245

第6章 原生庫的原理及實現 /246

6.1 系統C庫(Bionic Libc)/247

6.1.1 Bionic Libc功能概述 /247

6.1.2 Bionic Libc實現原理 /248

6.2 功能庫 /258

6.2.1 WebKit構架與實現 /258

6.2.2多媒體框架與實現 /275

6.2.3 Android SQLite框架及原理 /285

6.3 擴展庫 /289

6.3.1skia底層庫分析 /289

6.3.2 OpenGL底層庫分析 /299

6.3.3 Android-openssl實現及運用 /306

6.3.4 FreeType及Font Engine Manager /317

6.3.5 FreeType結構體系和渲染流程 /317

6.4 原生服務 /328

6.4.1 AudioFlinger實現 /328

6.4.2 SurfaceFlinger實現 /341

6.5 小結 /353

第7章 硬體抽象層的原理與實現 /354

7.1 硬體抽象層的實現原理 /355

7.1.1 Android HAL構架 /355

7.1.2 Android HAL的實現 /357

7.2 Android Overlay構架與實現 /361

7.2.1 Android Overlay系統構架 /361

7.2.2 Overlay HAL框架與實現 /362

7.2.3 Overlay與SurfaceFinger /369

7.3 Android Camera 構架與實現 /375

7.3.1 Android Camera系統構架 /375

7.3.2 Camera HAL框架與實現 /377

7.3.3 Camera本地實現 /385

7.4 Android Audio HAL實現 /394

7.4.1 Audio HAL框架 /395

7.4.2 Android默認的Audio HAL實現 /398

7.4.3 DUMP功能的Audio HAL實現 /400

7.4.4 基於A2dp的藍牙音頻設備HAL實現 /402

7.4.5 模擬器上的Audio HAL實現 /403

7.5 AndroidRIL實現 /404

7.5.1 Android RIL構架 /404

7.5.2 radiooptiongs實現 /407

7.5.3 libril庫實現 /409

7.5.4 reference-ril庫實現 /415

7.5.5 RILD守護進程實現 /418

7.5.6 request流程分析 /423

7.5.7 response流程分析 /427

7.6 Android Sensor HAL實現 /434

7.6.1 Android Sensor構建 /434

7.6.2 Sensor HAL接口 /435

7.6.3 Sensor HAL實現 /438

7.7 Android WIFI HAL實現 /441

7.7.1 Android WIFI系統構架 /441

7.7.2 wpa_supplicant框架 /442

7.7.3 WIFI HAL實現 /444

7.8 Android藍牙本地實現 /447

7.8.1 Android藍牙構架 /447

7.8.2 BlueZ結構體系 /448

7.8.3 BlueZ適配層/452

7.9 Android 定位實現 /453

7.9.1 定位系統構架 /453

7.9.2 GPS HAL實現 /454

7.10 Android Power HAL實現 /459

7.11 AndroidVibratorHAL實現 /461

7.12 小結 /462

第8章 Dalvik虛擬機的構架、原理與實現 /463

8.1 Dalvik虛擬機概述 /464

8.1.1 什麼是Dalvik虛擬機 /464

8.1.2 Dalvik虛擬機的功能 /464

8.1.3 Dalvik虛擬機與Java虛擬機的區別 /465

8.2 Dalvik構架與實現 /466

8.2.1 Dalvik系統構架 /466

8.2.2 dx和dexdump工具 /468

8.2.3 .dex檔案格式解析 /470

8.2.4 Dalvik內部機制 /487

8.2.5 Dalvik進程管理 /492

8.2.6 Dalvik記憶體管理 /501

8.2.7 Dalvik載入器 /509

8.2.8 Dalvik解釋器 /517

8.2.9 Dalvik JIT /519

8.3 JNI的構架與實現 /523

8.3.1 JNI構架 /523

8.3.2 JNI實現 /524

8.4 小結 /526

第9章 Android 核心庫 /527

9.1 Android核心庫簡介 /528

9.2 Android系統API /529

9.2.1 android包 /529

9.2.2 android資源包 /529

9.2.3 ApiCheck機制 /529

9.3 小結 /532

後記 /533

相關詞條

相關搜尋

熱門詞條

聯絡我們