Android系統級深入開發

Android系統級深入開發

《Android系統級深入開發》是2011年2月出版的一本圖書。

基本信息

宣傳語

Android系統級深入開發

從Android開源工程到產品的開發寶典

全面介紹Android中與硬體相關的子系統

按照驅動程式和硬體抽象層兩方面把握移植要點

高效粘合Linux系統經驗和移動設備套用場景

以三種硬體平台為參考,參考開發環境宜於獲得

作者簡介

韓 超,中國大陸資深Linux和移動開發工程師,長期從事一線開發工作,兼具開發實踐經驗和完備的教育思維模式。韓超是中國大陸較早開發Android系統開發的人員,曾從事系統框架、晶片移植適配和移動產品等開發領域;也曾經引領各種技術人員進入Android領域,並組織參與技術交流。

內容簡介

本書是一本全面介紹Android系統級開發的作品,全書以移植和調試為重點。Android具有一個龐大的軟體系統,任何開發者都難以掌握系統的每一個細節。因此,如何高效地理解和開發系統,就成了Android系統級別工程師面對的主要問題。本書作者以實際的開發經驗為基礎,以軟體工程思想為指導,完成了本書。本書介紹了從Android開源工程到一個基於實際硬體產品中的主要工作,一方面讓讀者清晰把握各個子系統的架構,另一方面讓讀者把握移植這個開發核心環節的要點。

本書適合Linux開發人員、移動設備開發人員、Android系統框架層和底層開發人員、有意圖深入學習Android的人員、以及從事手機研發的讀者閱讀

前 言

Android系統是目前最為流行的手機系統之一,本書作者在推出了全面介紹Android系統的《Android系統原理及開發要點詳解》一書,同時出版了繁體版,並將著作權成功輸出到韓國,韓文版將在2011年7月出版。在本書出版之後,筆者切實感到越來越多的開發人員和企業在關注Android系統的各個方面。

Android系統是開源的,它的一個比較大的優勢就是可以移植到各個不同的硬體平台上。“移植”是Android系統的精華所在,也是Android開發中的難點兼重點。

本書《Android系統級深入開發——移植與調試》出版的主要目的是分享開發經驗,幫助眾多開發者快速地掌握Android系統在不同硬體平台移植的方法。幫助工程師以最快的速度、最小的開銷、最輕的工作量,讓Android系統高效地運行在更多的硬體上。

本書特點

本書緊緊抓住了Android系統移植與調試的主題,從開發者的角度出發,其特點主要包括以下幾個方面:

本書使用的代碼以Android的開源工程為主,硬體也是比較常見的設備,保證讀者可以很容易地獲得開發環境。

根據Android系統自身的固有特點,從Linux核心中的驅動和硬體抽象層兩個著手點作為切入點。

按照Linux的開發思路,從驅動程式的角度出發,讓具有Linux開發經驗的工程師,可以更快地熟悉主要用於移動設備開發的Android系統。

從模擬器、高通的MSM平台、德州儀器的OMAP平台這三種硬體平台出發,全面介紹,不以偏概全,既把握共同點,也突出差異。

對於Android中規模和難度各不相同的子系統,抓住它們和硬體相關的共同點,採取同樣的格式和思路進行介紹,體現了“從特殊到一般”的理念。

簡要介紹各個子系統的框架,並列出代碼路徑,對移植部分的主要調用部分加強提示,讓讀者更全面地把握系統。

本書內容

本書分成24章,各章的內容如下所示:

第1章和第2章:概要部分 介紹Android的系統的大結構、移植的主要工作,開發環境的構建方法

第3章:全書的總綱 全面介紹Linux系統的驅動程式,突出介紹Android中硬體抽象層的不同實現方式,展示Android移植的各個方面

續表

第4章至第6章:Linux核心方面 主要介紹用於模擬器的goldfish、MSM的mahimahip平台和OMAP的Zoom平台的3種Linux核心,介紹了不同體系結構的移植,與硬體無關的Android專用驅動,並簡單介紹了各個硬體設備的驅動程式

第7章和第8章:基本GUI的系統 包括顯示輸出和用戶輸入兩個部分,是每個系統最優先移植的部分

第9章:感測器系統 體現Android系統最經典的移植方式

第10章至第12章:多媒體的輸入輸出環節 是Android移植重點關注的部分

第13章至第15章:連線系統 介紹連線方面的無線區域網路、藍牙和定位三個子系統,前兩者使用Linux中比較標準的方式,定位主要通過GPS進行介紹

第16章:電話系統 介紹電話系統,這也是用於移動設備的核心部分

第17章:OpenGL 作為顯示加速的OpenGL 3D的移植,體現Android和業界標準規範的接軌

第18章和第19章:多媒體 用於多媒體加速的編解碼單元的移植,第18章介紹編結碼較下層的標準模組OpenMax外掛程式,第19章介紹OpenMax外掛程式在Android系統中的使用

第20章:位塊複製 介紹位塊複製部分,主要用於原始圖像數據處理的加速

第21章至第24章:幾個小系統 介紹與行動電話相關的警報器、光、振動器、電池信息這4個Android中較小系統的移植

本書讀者

本書適合不同類型的讀者群,不同類型的讀者在學習的時候需要使用不同的方法。作者的建議如下:

對於熟悉Linux核心但不熟悉Android的開發者,應該以驅動程式作為切入點,通過硬體抽象層的實現,將Linux的各個驅動程式套用到Android系統中。

對於熟悉Android系統但不熟悉Linux核心的開發者,向下了解Linux核心,這樣既可以更深入地了解Android系統的運作方式,又可以拓展自己的技術領域。

對於經驗較多,希望深入研究Android系統的開發者,應該更關注開發的細節,了解移植中調試的要點。

本書作者

本書的規劃和統籌由中國大陸的韓超完成,韓超常年工作在Linux和Android的開發一線,兼具產品和理論經驗。本書內容來源於工作在不同領域Android和Linux開發者多年的經驗。韓超和梁泉完成了本書內容的主要部分,眾多不同規模的企業開發成果也為本書的編寫提供了重要的素材。參與本書編寫的還有崔海斌、於仕林、張宇、張超、趙家維、黃亮、沈楨、徐威特、楊鈺、馬若劼、曹道剛等。廣大社區開發者也對本書的成稿作出了貢獻。

目 錄

第1章 Android系統移植開發概述 1

1.1 Android系統架構和生態系統 1

1.1.1 Android軟體系統 1

1.1.2 Android的生態系統 3

1.2 Android移植的概念和方法 4

1.3 Android移植的主要工作 5

第2章 Android原始碼和開發環境 8

2.1 開發環境和工具 8

2.2 Android的代碼庫 9

2.3 Android系統代碼和編譯 9

2.3.1 獲取Android原始碼 9

2.3.2 Android原始碼結構 12

2.3.3 編譯Android系統原始碼 13

2.3.4 編譯Android結果 13

2.4 Android Kernel代碼和編譯 14

2.4.1 Goldfish核心原始碼 15

2.4.2 MSM核心原始碼 15

2.4.3 Omap核心原始碼 16

2.5 仿真器的運行環境 16

2.5.1 仿真器的運行 16

2.5.2 使用附加工具 18

第3章 Android系統移植的結構和方法 20

3.1 Android的Linux作業系統 20

3.1.1 標準的Linux作業系統 20

3.1.2 Android對Linux 核心的使用 22

3.1.3 Linux核心空間用戶空間的接口 24

3.1.4 平台數據和平台驅動 34

3.2 Android的硬體抽象層 35

3.2.1 硬體抽象層的地位和功能 35

3.2.2 硬體抽象層接口方式 36

3.3 Android中各個部件的移植方式 41

3.4 輔助性工作和基本調試方法 41

3.4.1 移植的輔助性工作 42

3.4.2 調試的方法 46

第4章 Android的GoldFish核心和驅動 56

4.1 GoldFish核心概述 56

4.2 GoldFish體系結構移植 58

4.3 GoldFish的Android專用驅動和組件 59

4.3.1 wakelock和earlysuspend 59

4.3.2staging中的驅動程式 61

4.3.3 Ashmem驅動程式 66

4.3.4 Alarm驅動程式 67

4.3.5 pmem驅動程式 67

4.3.6 ADB Garget驅動程式 68

4.3.7 Androidparanoid網路 68

4.4 GoldFish的相關設備驅動 70

4.4.1FrameBuffer的驅動程式 70

4.4.2 鍵盤的驅動程式 70

4.4.3 實時時鐘的驅動程式 71

4.4.4TTY終端的驅動程式 71

4.4.5 NandFlash的驅動程式 72

4.4.6 MMC的驅動程式 72

4.4.7 電池的驅動程式 73

4.4.8 EAC音頻的驅動程式 73

第5章 Android的MSM核心和驅動 74

5.1 MSM處理器概述 74

5.1.1 MSM概述 74

5.1.2 MSM適用於Android的Linux核心的結構 77

5.2 MSM體系結構的移植 79

5.3 MSM的Android專用驅動和組件 80

5.4 MSM的mahimahip平台的主要設備驅動 81

5.4.1 顯示的驅動程式 81

5.4.2 觸控螢幕的驅動程式 82

5.4.3 按鍵和軌跡球的驅動程式 82

5.4.4 實時時鐘的驅動程式 83

5.4.5 攝像頭的驅動程式 83

5.4.6 無線區域網路的驅動程式 83

5.4.7 藍牙的驅動程式 84

5.4.8 DSP相關的驅動程式 84

5.4.9 高通特有的組件相關內容 85

第6章 Android的OMAP核心和驅動 87

6.1 OMAP核心概述 87

6.1.1 OMAP概述 87

6.1.2 OMAP適用於Android的Linux核心的結構 91

6.2 OMAP體系結構的移植 92

6.2.1 OMAP平台部分的移植 92

6.2.2 OMAP處理器部分的移植 94

6.3 OMAP的Android專用驅動和組件 96

6.4 OMAP的主要設備驅動 97

6.4.1 顯示的驅動程式 97

6.4.2 攝像頭和視頻輸出的驅動程式 98

6.4.3 i2c匯流排驅動程式98

6.4.4 鍵盤的驅動程式 99

6.4.5 觸控螢幕的驅動程式 99

6.4.6 實時時鐘的驅動程式 99

6.4.7 音頻的驅動程式 99

6.4.8 藍牙的驅動程式 100

6.4.9 乙太網的驅動程式 100

6.4.10 DSP的驅動程式 100

第7章 顯示系統 101

7.1 顯示系統結構和移植內容 101

7.1.1donut及其之前顯示系統的結構 102

7.1.2 Eclair及其之後顯示系統的結構 102

7.1.3 移植的內容 103

7.2 移植和調試的要點 104

7.2.1 Framebuffer驅動程式 104

7.2.2 Donut及其之前的硬體抽象層 106

7.2.3 Eclair及其之後的硬體抽象層 107

7.3 顯示部分模擬器的實現方式 112

7.3.1 Goldfish的framebuffer驅動程式 112

7.3.2 默認的Gralloc模組的實現 113

7.4 MSM中的實現 119

7.4.1 MSM的framebuffer驅動程式 119

7.4.2 MSM的Gralloc模組的實現 120

7.5 OMAP中的實現 126

7.5.1 OMAP的framebuffer驅動程式 126

7.5.2 OMAP的用戶空間的實現 128

第8章 用戶輸入系統 129

8.1 用戶輸入系統結構和移植內容 129

8.1.1 用戶輸入系統的結構 129

8.1.2 移植的內容 131

8.2 移植的要點 131

8.2.1 input驅動程式 131

8.2.2 用戶空間的處理 134

8.2.3 移植需要注意的情況 139

8.3 模擬器中的實現 141

8.3.1 驅動程式 141

8.3.2 用戶空間的配置檔案 141

8.4 MSM中的實現 142

8.4.1 觸控螢幕,軌跡球和按鍵驅動程式 142

8.4.2 用戶空間的配置檔案 144

8.5 OMAP中的實現 144

8.5.1 觸控螢幕和鍵盤的驅動程式 144

8.5.2 用戶空間的配置檔案 146

8.6 虛擬按鍵的實現 146

第9章 感測器系統 148

9.1 感測器系統結構和移植內容 148

9.1.1 感測器系統的結構 148

9.1.2 移植的內容 150

9.2 移植和調試的要點 150

9.2.1 驅動程式 150

9.2.2 硬體抽象層的內容 151

9.2.3 上層的情況和注意事項 153

9.3 模擬器中的實現 157

第10章 音頻系統 162

10.1 音頻系統結構和移植內容 162

10.1.1 音頻系統的結構 162

10.1.2 移植的內容 164

10.2 移植和調試的要點 164

10.2.1 Audio驅動程式 164

10.2.2 硬體抽象層的內容 164

10.2.3 Audio策略管理的內容 168

10.2.4 上層的情況和注意事項 169

10.3 通用的Audio系統實現 170

10.3.1 用樁實現的Audio硬體抽象層 172

10.3.2 提供Dump功能的Audio硬體抽象層 174

10.3.3 通用的Audio硬體抽象層 177

10.4 MSM系統的實現 178

10.4.1 Audio驅動程式 178

10.4.2 Audio硬體抽象層 180

10.5 基於OSS和ALSA的實現方式 183

10.5.1 OSS驅動程式 183

10.5.2 基於OSS的硬體抽象層 184

10.5.3 ALSA驅動程式 185

10.5.4 基於ALSA的硬體抽象層 186

第11章 視頻輸出系統 190

11.1 視頻輸出系統結構和移植內容 190

11.1.1 視頻輸出系統的結構 191

11.1.2 移植的內容 192

11.2 移植和調試的要點 192

11.2.1 驅動程式 192

11.2.2 硬體抽象層的內容 192

11.2.3 上層的情況和注意實現 195

11.3overlay硬體抽象層實現的框架 199

11.4 OMAP系統的實現 200

11.4.1 OMAP的視頻輸出部分的驅動程式 200

11.4.2 OMAP Overlay 硬體抽象層 202

第12章 照相機系統 205

12.1 照相機系統結構和移植內容 205

12.1.1 照相機系統的結構 206

12.1.2 移植的內容 207

12.2 移植和調試的要點 207

12.2.1 Video for 4Linux驅動程式 207

12.2.2 硬體抽象層的內容 210

12.2.3 上層的情況和注意事項 215

12.2.4 照相機系統的數據流情況 219

12.3 Camera硬體抽象層樁實現 222

12.4 MSM平台的Camera實現 226

12.4.1 MSM平台的Camera驅動程式 226

12.4.2 MSM平台的Camera硬體抽象層 227

12.5 OMAP平台的Camera實現 228

12.5.1 OMAP平台的Camera驅動程式 228

12.5.2 OMAP平台的Camera硬體抽象層 229

第13章 無線區域網路系統 230

13.1 無線區域網路系統結構和移植內容 230

13.1.1 無線區域網路系統的結構 231

13.1.2 移植的內容 232

13.2 移植和調試的要點 232

13.2.1 協定和驅動程式 232

13.2.2 用戶空間的內容 233

13.2.3 上層的情況和調試方法 233

13.3 OMAP系統的無線區域網路實現 235

13.3.1 Linux核心中的內容 235

13.3.2 用戶空間的實現 236

第14章 藍牙系統 238

14.1 藍牙系統結構和移植內容 238

14.1.1 藍牙系統的結構 239

14.1.2 移植的內容 240

14.2 移植和調試的要點 240

14.2.1 驅動程式 240

14.2.2本地代碼的配置部分 242

14.2.3 上層的情況和調試方法 244

14.3 MSM系統的藍牙實現 245

14.3.1 驅動部分 245

14.3.2 用戶空間的部分 247

第15章 定位系統 248

15.1 定位系統的系統結構和移植內容 248

15.1.1 定位系統的系統結構 248

15.1.2 移植的內容 250

15.2 移植和調試的要點 250

15.2.1 驅動程式 250

15.2.2 硬體抽象層 251

15.2.3 上層的情況和調試方法 253

15.3 仿真器的GPS硬體適配層實現 256

15.4 MSM平台的GPS硬體適配層實現 257

第16章 電話系統 260

16.1 電話系統結構和移植內容 260

16.1.1 電話系統的系統結構 260

16.1.2 移植的內容 262

16.2 移植和調試的要點 262

16.2.1 驅動程式 262

16.2.2RIL實現庫的接口 264

16.2.3 數據連線部分 266

16.2.4 調試方法 267

16.3 電話部分的RIL參考實現 268

16.3.1 連線埠初始化 268

16.3.2 AT命令處理流程 269

16.3.3 Event模組 270

16.3.4 Modem AT命令初始化 272

16.3.5 請求和回響流程的處理 272

16.3.6 特定命令類型的實現 274

第17章 OpenGL 3D引擎 276

17.1 OpenGL系統結構和移植內容 276

17.1.1 OpenGL系統的結構 277

17.1.2 移植的內容 283

17.2 移植和調試的要點 283

17.2.1 OpenGL移植層的接口 283

17.2.2 上層的情況和OpenGL的調試 285

17.2 Android軟體OpenGL的實現 288

17.3 不同系統中的實現 290

第18章 OpenMax多媒體引擎 292

18.1 OpenMax系統結構和移植內容 292

18.1.1 OpenMax系統的結構 293

18.1.2 Android OpenMax實現的內容 297

18.2 OpenMax的接口與實現 297

18.2.1 OpenMax IL層的接口 297

18.2.2 OpenMax IL實現的內容 302

18.2.3 Android中OpenMax的適配層 302

18.3 OMAP平台OpenMax IL的硬體實現 304

18.3.1 TI OpenMax IL實現的結構和機制 304

18.3.2 TI OpenMax IL的核心和公共內容 306

18.3.3 一個TI OpenMax IL組件的實現 307

第19章 多媒體系統的外掛程式 310

19.1 Android多媒體相關結構與移植內容 310

19.1.1 多媒體處理過程 311

19.1.2 移植的內容 312

19.2opencore引擎的結構和外掛程式 313

19.2.1 OpenCore的結構 313

19.2.2 OpenCore的Node外掛程式機制 314

19.2.3 OpenMax部分的結構、實現和外掛程式結構 316

19.2.4 關於媒體輸入輸出類MediaIO 322

19.2.5 OpenCore Player的視頻顯示部分外掛程式 325

19.3 Stagefright引擎的結構和外掛程式 326

19.3.1 Stagefright系統結構 326

19.3.2 Stagefright對Android中OpenMax接口的實現 328

19.3.3 MediaSource外掛程式機制 328

19.3.4 OpenMax和VideoRenderer外掛程式機制 330

19.4 OMAP平台實現的外掛程式 332

19.4.1 OpenCore的OpenMax外掛程式 333

19.4.2 OpenCore的視頻輸出外掛程式 334

19.4.3 Stagefright的OpenMax和視頻輸出外掛程式 336

第20章 位塊複製系統 339

20.1 位塊複製結構和移植內容 339

20.1.1 位塊複製系統的結構 339

20.1.2 移植內容 340

20.2 移植和調試的要點 340

20.2.1 驅動程式 340

20.2.2 硬體抽象層的內容 341

20.2.3 上層的情況和注意事項 342

20.3 MSM平台中的實現 343

第21章 警報器——實時時鐘系統 346

21.1 警報器——實時時鐘結構和移植內容 346

21.1.1 警報器——實時時鐘系統的結構 346

21.1.2 移植內容 347

21.2 移植與調試的要點 348

21.2.1 RTC驅動程式 348

21.2.2 Alarm驅動程式 349

21.2.3 上層的情況和注意事項 349

21.3 模擬器環境中的實現 351

21.4 MSM平台的實現 351

第22章 光系統 354

22.1 光系統結構和移植內容 354

22.1.1 光系統部分的結構 354

22.1.2 移植內容 355

22.2 移植與調試的要點 356

22.2.1 驅動程式 356

22.2.2 硬體抽象層的內容 356

22.2.3 上層的情況和注意事項 357

22.3 MSM中的實現 359

22.3.1 驅動程式 359

22.3.2 硬體抽象層 359

第23章 振動器系統 361

23.1 振動器系統結構和移植內容 361

23.1.1 振動器部分的結構 361

23.1.2 移植內容 362

23.2 移植與調試的要點 363

23.2.1 驅動程式 363

23.2.2 硬體抽象層的內容 363

23.2.3 上層的情況和注意事項 364

23.3 MSM中的實現 365

第24章 電池系統 367

24.1 電池系統結構和移植內容 367

24.1.1 電池系統部分的結構 367

24.1.2 移植內容 368

24.2 移植和調試的要點 368

24.2.1 驅動程式 368

24.2.2 上層的情況和注意事項 369

24.3 模擬器中的實現 371

相關詞條

相關搜尋

熱門詞條

聯絡我們