《Android技術內幕:系統卷》是國內首本系統對Android的源代碼進行深入分析的著作。全書將Android系統從構架上依次分爲應用層、應用框架層、系統運行庫層、硬件抽象層和Linux內核層等5個層次,旨在通過對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源碼實現感興趣的讀者。
目錄:
前言
第1章準備工作 /1
1.1深入認識android /2
1.1.1android的系統構架 /2
1.1.2android的初始化流程 /5
1.1.3各個層次之間的相互關係 /8
1.1.4android系統開發(移植)和應用開發 /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.4android源碼結構 /32
1.5小結 /33
第2章android的內核機制和結構剖析 /34
2.1linux與android的關係 /35
.2.1.1爲什麼會選擇linux /35
2.1.2android不是linux /35
2.2android對linux內核的改動 /37
2.2.1goldfish /37
2.2.2yaffs2 /38
2.2.3藍牙 /39
2.2.4調度器(scheduler)/39
2.2.5android新增的驅動 /40
2.2.6電源管理 /41
2.2.7雜項 /41
2.3android對linux內核的增強 /42
2.3.1alarm(硬件時鐘)/43
2.3.2ashmem(匿名內存共享)/46
2.3.3low memory killer(低內存管理)/52
2.3.4logger(日誌設備)/56
2.3.5android pmem /65
2.3.6switch /79
2.3.7timed gpio /88
2.3.8android ram console /94
2.4小結 /99
第3章android的ipc機制--binder /100
3.1binder概述 /101
3.1.1爲什麼選擇binder /101
3.1.2初識binder /102
3.2binder驅動的原理和實現 /102
3.2.1binder驅動的原理 /102
3.2.2binder驅動的實現 /103
3.3binder的構架與實現 /132
3.3.1binder的系統構架 /132
3.3.2binder的機制和原理 /133
3.4小結 /150
第4章電源管理 /151
4.1電源管理概述 /152
4.2電源管理結構 /152
4.3android的電源管理機制 /153
4.4android電源管理機制的實現 /154
4.5小結 /187
第5章驅動的工作原理及實現機制 /188
5.1顯示驅動(framebuffer)/189
5.1.1framebuffer的工作原理 /189
5.1.2framebuffer的構架 /190
5.1.3framebuffer驅動的實現機制 /190
5.2視頻驅動(v4l和v4l2)/201
5.2.1v4l2介紹 /201
5.2.2v4l2的原理和構架 /201
5.2.3v4l2的實現 /202
5.3音頻驅動(oss和alsa)/208
5.3.1oss與alsa介紹 /208
5.3.2oss的構架與實現 /209
5.3.3alsa的構架與實現 /213
5.4mtd驅動 /214
5.4.1mtd驅動的功能 /214
5.4.2mtd驅動的構架 /215
5.4.3mtd驅動的原理及實現 /215
5.5event輸入設備驅動 /223
5.5.1input的系統構架 /223
5.5.2event輸入驅動的構架 /224
5.5.3event輸入驅動的原理 /224
5.5.4event輸入驅動的實現 /225
5.6藍牙驅動(bluetooth)/235
5.6.1bluetooth驅動的構架 /235
5.6.2bluez的原理及實現 /237
5.7wlan驅動(wi-fi)/244
5.7.1wlan構架 /244
5.7.2wi-fi驅動的實現原理 /245
5.8小結 /245
第6章原生庫的原理及實現 /246
6.1系統c庫(bionic libc)/247
6.1.1bionic libc功能概述 /247
6.1.2bionic libc實現原理 /248
6.2功能庫 /258
6.2.1webkit構架與實現 /258
6.2.2多媒體框架與實現 /275
6.2.3android sqlite框架及原理 /285
6.3擴展庫 /289
6.3.1skia底層庫分析 /289
6.3.2opengl底層庫分析 /299
6.3.3android-openssl實現及運用 /306
6.3.4freetype及font engine manager /317
6.3.5freetype結構體系和渲染流程 /317
6.4原生服務 /328
6.4.1audioflinger實現 /328
6.4.2surfaceflinger實現 /341
6.5小結 /353
第7章硬件抽象層的原理與實現 /354
7.1硬件抽象層的實現原理 /355
7.1.1android hal構架 /355
7.1.2android hal的實現 /357
7.2android overlay構架與實現 /361
7.2.1android overlay系統構架 /361
7.2.2overlay hal框架與實現 /362
7.2.3overlay與surfacefinger /369
7.3android camera 構架與實現 /375
7.3.1android camera系統構架 /375
7.3.2camera hal框架與實現 /377
7.3.3camera本地實現 /385
7.4android audio hal實現 /394
7.4.1audio hal框架 /395
7.4.2android默認的audio hal實現 /398
7.4.3dump功能的audio hal實現 /400
7.4.4基於a2dp的藍牙音頻設備hal實現 /402
7.4.5模擬器上的audio hal實現 /403
7.5android ril實現 /404
7.5.1android ril構架 /404
7.5.2radiooptiongs實現 /407
7.5.3libril庫實現 /409
7.5.4reference-ril庫實現 /415
7.5.5rild守護進程實現 /418
7.5.6request流程分析 /423
7.5.7response流程分析 /427
7.6android sensor hal實現 /434
7.6.1android sensor構建 /434
7.6.2sensor hal接口 /435
7.6.3sensor hal實現 /438
7.7android wifi hal實現 /441
7.7.1android wifi系統構架 /441
7.7.2wpa_supplicant框架 /442
7.7.3wifi hal實現 /444
7.8android藍牙本地實現 /447
7.8.1android藍牙構架 /447
7.8.2bluez結構體系 /448
7.8.3bluez適配層 /452
7.9android 定位實現 /453
7.9.1定位系統構架 /453
7.9.2gps hal實現 /454
7.10android power hal實現 /459
7.11android vibrator hal實現 /461
7.12小結 /462
第8章dalvik虛擬機的構架、原理與實現 /463
8.1dalvik虛擬機概述 /464
8.1.1什麼是dalvik虛擬機 /464
8.1.2dalvik虛擬機的功能 /464
8.1.3dalvik虛擬機與java虛擬機的區別 /465
8.2dalvik構架與實現 /466
8.2.1dalvik系統構架 /466
8.2.2dx和dexdump工具 /468
8.2.3.dex文件格式解析 /470
8.2.4dalvik內部機制 /487
8.2.5dalvik進程管理 /492
8.2.6dalvik內存管理 /501
8.2.7dalvik加載器 /509
8.2.8dalvik解釋器 /517
8.2.9dalvik jit /519
8.3jni的構架與實現 /523
8.3.1jni構架 /523
8.3.2jni實現 /524
8.4小結 /526
第9章android 核心庫 /527
9.1android核心庫簡介 /528
9.2android系統api /529
9.2.1android包 /529
9.2.2android資源包 /529
9.2.3apicheck機制 /529
9.3小結 /532
後記/533
2