深入理解Android核心設計思想

深入理解Android核心設計思想

《深入理解Android核心設計思想》適用於Android 4.3以上的版本。全書從作業系統的基礎知識入手,全面剖析進程/執行緒、記憶體管理、Binder機制、GUI顯示系統、多媒體管理、輸入系統等核心技術在Android中的實現原理。書中講述的知識點大部分來源於工程項目研發,因而具有較強的實用性,希望可以讓讀者“知其然,更知其所以然”。全書分為編譯篇、系統原理篇、套用原理篇、系統工具篇共4篇22章,基本涵蓋了參與Android開發所需具備的知識,並通過大量圖片與實例來引導讀者學習,以求儘量在原始碼分析外為讀者提供更易於理解的思維方式。 《深入理解Android核心設計思想》既適合Android系統工程師,也適合於套用開發工程師來閱讀提升Android開發能力。讀者可以在《深入理解Android核心設計思想》潛移默化的學習過程中更深刻地理解Android系統,並將所學知識自然地套用到實際開發難題的解決中。

基本介紹

  • 中文名:深入理解Android核心設計思想
  • 書名:深入理解Android核心設計思想
  • 類型:計算機與網際網路
  • 出版日期:2014年5月1日
  • 語種:簡體中文
  • ISBN:7115348413
  • 作者:林學森
  • 出版社:人民郵電出版社
  • 頁數:687頁
  • 開本:16
基本介紹,內容簡介,作者簡介,圖書目錄,

基本介紹

內容簡介

4次重大改版,10餘次修訂,歷史3年完成
基於Android SDK最新版本
全面剖析了進程/執行緒、記憶體管理、Binder機制、GUI顯示系統、多媒體管理、輸入系統等核心知識在Android中的實現原理
通過大量圖片與實例來引導讀者學習,以求儘量在源碼分析外,為讀者提供更易於理解的思維路徑
由淺入深,由總體框架再到細節實現,讓讀者儘快了解Android核心的設計思想

作者簡介

林學森,香港中文大學計算機碩士,曾於多家跨國企業擔任研發和管理工作,並已在國內外會議、雜誌上發表多篇一作文章。現為某行業知名企業Android軟體創始人、負責人。有豐富的技術研發與項目管理經驗,擅長作業系統架構設計與核心分析。

圖書目錄

第1篇 Android編譯篇
第1章 Android系統簡介
1.1 Android系統發展歷程
1.2 Android系統特點
1.3 Android系統框架
第2章 Android源碼下載及編譯
2.1 Android源碼下載指南
2.1.1 基於Repo和Git的版本管理
2.1.2 Android源碼下載流程
2.2 原生態系統編譯指南
2.2.1 建立編譯環境
2.2.2 編譯流程
2.3 定製產品的編譯與燒錄
2.3.1 定製新產品
2.3.2 Linux核心編譯
2.3.3 燒錄
2.4 Android系統映像檔案
2.4.1 boot.img
2.4.2 ramdisk.img
2.4.3 system.img
2.5 OTA系統升級
2.5.1 生成升級包
2.5.2 獲取升級包
2.5.3 OTA升級—RecoveryMode
2.6 Android反編譯
第3章 Android編譯系統
3.1 Makefile入門
3.2 Android編譯系統
3.2.1 Makefile依賴樹的概念
3.2.2 樹根節點droid
3.2.3 main.mk解析
3.2.4 droidcore節點
3.2.5 dist_files
3.2.6 Android.mk的編寫規則
第2篇 Android原理篇
第4章 作業系統基礎
4.1 計算機體系結構(Computer Architecture)
4.1.1 馮·諾依曼結構
4.1.2 哈佛結構
4.2 什麼是作業系統
4.3 進程間通信的經典實現
4.3.1 共享記憶體(Shared Memory)
4.3.2 管道(Pipe)
4.3.3 Unix Domain Socket
4.3.4 RPC(RemoteProcedure Calls)
4.4 同步機制的經典實現
4.4.1 信號量(Semaphore)
4.4.2 Mutex
4.4.3 管程(Monitor)
4.4.4 同步範例
4.5 Android中的同步機制
4.5.1 進程間同步——Mutex
4.5.2 條件判斷——Condition
4.5.3 “柵欄、障礙”——Barrier
4.5.4 加解鎖的自動化操作——Autolock
4.6 作業系統記憶體管理基礎
4.6.1 虛擬記憶體(Virtual Memory)
4.6.2 記憶體保護(Memory Protection)
4.6.3 記憶體分配與回收
4.6.4 進程間通信——mmap
4.7 Android中的Low Memory Killer
4.8 Android匿名共享記憶體(Anonymous Shared Memory)
4.8.1 Ashmem設備
4.8.2 Ashmem套用實例
4.9 JNI
4.9.1 Java函式的本地實現
4.9.2 本地代碼訪問JVM
4.10 學習Android系統的兩條線索
第5章 Android進程/執行緒管理
5.1 Android進程和執行緒
5.2 Handler, MessageQueue,Runnable與Looper
5.3 UI主執行緒——ActivityThread
5.4 Thread類
5.4.1 Thread類的內部原理
5.4.2 Thread休眠和喚醒
5.4.3 Thread實例
5.5 Android應用程式的典型啟動流程
第6章 進程間通信——Binder
6.1 智慧型指針
6.1.1 智慧型指針的設計理念
6.1.2 強指針sp
6.1.3 弱指針wp
6.2 進程間的數據傳遞載體——Parcel
6.3 Binder驅動與協定
6.3.1 打開Binder驅動——binder_open
6.3.2 binder_mmap
6.3.3 binder_ioctl
6.4 “DNS”伺服器——ServiceManager(Binder Server)
6.4.1 ServiceManager的啟動
6.4.2 ServiceManager的構建
6.4.3 獲取ServiceManager服務——設計思考
6.4.4 ServiceManagerProxy
6.4.5 IBinder和BpBinder
6.4.6 ProcessState和IPCThreadState
6.5 Binder客戶端——Binder Client
6.6 Android接口描述語言——AIDL
6.7 匿名Binder Server
第7章 Android啟動過程簡析
7.1 第一個系統進程(init)
7.1.1 init.rc語法
7.1.2 init.rc實例分析
7.2 系統關鍵服務的啟動簡析
7.2.1 Android的“DNS伺服器”——ServiceManager
7.2.2 “孕育”新的執行緒和進程——Zygote
7.2.3 Android的“系統服務”——SystemServer
第8章 管理Activity和組件運行狀態的系統進程——Activity ManagerService (AMS)
8.1 AMS功能概述
8.2 管理當前系統中Activity狀態——Activity Stack
8.3 startActivity流程
8.4 完成同一任務的“集合”——Activity Task
8.4.1 “後進先出”——Last In,First Out
8.4.2 管理Activity Task
第9章 GUI系統之SurfaceFlinger
9.1 OpenGL ES與EGL
9.2 Android的硬體接口——HAL
9.3 Android終端顯示設備的“化身”——Gralloc與Framebuffer
9.4 Android中的本地視窗
9.4.1 FramebufferNativeWindow
9.4.2 應用程式端的本地視窗——Surface
9.5 BufferQueue詳解
9.5.1 BufferQueue的內部原理
9.5.2 BufferQueue中的緩衝區分配
9.5.3 應用程式的典型繪圖流程
9.5.4 應用程式與BufferQueue的關係
9.6 SurfaceFlinger
9.6.1 “黃油計畫”——Project Butter
9.6.2 SurfaceFlinger的啟動
9.6.3 接口的服務端——Client
9.7 VSync的產生和處理
9.7.1 VSync信號的產生和分發
9.7.2 VSync信號的處理
9.7.3 handleMessageTransaction
9.7.4 “界面已經過時/無效,需要重新繪製”——handleMessageInvalidate
9.7.5 合成前的準備工作——precomposition
9.7.6 可見區域——rebuildLayerStacks
9.7.7 為“Composition”搭建環境——setupHWComposer
9.7.8 doDebugFlashRegions
9.7.9 docomposition
第10章 GUI系統之“視窗管理員”——WMS
10.1 “視窗管理員”——WMS綜述
10.1.1 WMS的啟動
10.1.2 WMS的基礎功能
10.1.3 WMS的工作方式
10.1.4 WMS,AMS與Activity間的聯繫
10.2 視窗屬性
10.2.1 視窗類型與層級
10.2.2 視窗策略(Window Policy)
10.2.3 視窗屬性(LayoutParams)
10.3 視窗的添加過程
10.3.1 系統視窗的添加過程
10.3.2 Activity視窗的添加過程
10.3.3 視窗添加實例
10.4 Surface管理
10.4.1 Surface申請流程(relayout)
10.4.2 Surface的跨進程傳遞
10.4.3 Surface的業務操作
10.5 performLayoutAndPlaceSurfacesLockedInner
10.6 視窗大小的計算過程
10.7 啟動視窗的添加與銷毀
10.7.1 啟動視窗的添加
10.7.2 啟動視窗的銷毀
10.8 視窗動畫
10.8.1 視窗動畫類型
10.8.2 動畫流程跟蹤——WindowStateAnimator
10.8.3 AppWindowAnimator
10.8.4 動畫的執行過程
第11章 讓你的界面炫彩起來的GUI系統之View體系
11.1 應用程式中的View框架
11.2 Activity中View Tree的創建過程
11.3 在WMS中註冊視窗
11.4 ViewRoot的基本工作方式
11.5 View Tree的遍歷時機
11.6 View Tree的遍歷流程
11.7 View和ViewGroup屬性
11.7.1 View的基本屬性
11.7.2 ViewGroup的屬性
11.7.3 View,ViewGroup和ViewParent
11.7.4 Callback接口
11.8 “作畫“工具集——Canvas
11.8.1 “繪製UI”——Skia
11.8.2 數據中介——Surface.lockCanvas
11.8.3 解鎖並提交結果——unlockCanvasAndPost
11.9 draw和onDraw
11.10 View中的訊息傳遞
11.10.1 View中TouchEvent的投遞流程
11.10.2 ViewGoup中TouchEvent的投遞流程
11.11 View動畫
第12章 “問渠哪得清如許,為有源頭活水來”——InputManagerService與輸入事件
12.1 事件的分類
12.2 事件的投遞流程
12.2.1 InputManagerService
12.2.2 InputReaderThread
12.2.3 InputDispatcherThread
12.2.4 ViewRootImpl對事件的派發
第13章 套用不再同質化——音頻系統
13.1 音頻基礎
13.1.1 聲波
13.1.2 音頻的錄製、存儲與回放
13.1.3 音頻採樣
13.1.4 Nyquist–Shannon採樣定律
13.1.5 聲道和立體聲
13.1.6 聲音定級——Weber–Fechner law
13.1.7 音頻檔案格式
13.2 音頻框架
13.2.1 Linux中的音頻框架
13.2.2 TinyAlsa
13.2.3 Android系統中的音頻框架
13.3 音頻系統的核心——AudioFlinger
13.3.1 AudioFlinger服務的啟動和運行
13.3.2 AudioFlinger對音頻設備的管理
13.3.3 PlaybackThread的循環主體
13.3.4 AudioMixer
13.4 策略的制定者——AudioPolicyService
13.4.1 AudioPolicyService概述
13.4.2 AudioPolicyService的啟動過程
13.4.3 AudioPolicyService與音頻設備
13.5 音頻流的回放——AudioTrack
13.5.1 AudioTrack套用實例
13.5.2 AudioPolicyService的路由實現
13.6 音頻數據流
13.6.1 AudioTrack中的音頻流
13.6.2 AudioTrack和AudioFlinger間的數據互動
13.6.3 AudioMixer中的音頻流
13.7 音量控制
13.8 音頻系統的上層建築
13.8.1 從功能入手
13.8.2 MediaPlayer
13.8.3 MediaRecorder
13.8.4 一個典型的多媒體錄製程式
13.8.5 MediaRecorder源碼解析
13.8.6 MediaPlayerService簡析
13.9 Android支持的媒體格式
13.9.1 音頻格式
13.9.2 視頻格式
13.9.3 圖片格式
13.9.4 網路流媒體
13.10 ID3信息簡述
13.11 Android多媒體檔案管理
13.11.1 MediaStore
13.11.2 多媒體檔案信息的存儲“倉庫”——MediaProvider
13.11.3 多媒體檔案管理中的“生產者”——MediaScanner
……
第3篇 套用原理篇
第4篇 Android系統工具

相關詞條

熱門詞條

聯絡我們