”Read the f**king Source Code” –Linus Benedict Torvalds
-本書謹獻給那些埋首致力與「該死的原始碼」奮戰的程式設計師們
探索和品味Android大師們的內核設計藝術
歷經4次重大改版,10餘次修訂,耗時3年完成重量級巨著
伴隨Android的高速發展,本書終於與讀者見面了。
一本讀得懂、用得上,幫助解決專案項目難點的權威指南。Android遊戲製作教程,Android SDK寶典!
全書分為編譯篇、系統原理篇、應用原理篇、系統工具篇共4篇22章,
基於Android SDK最新版本,全面剖析了行程/執行緒、記憶體管理、Binder機制、
GUI顯示系統、多媒體管理、輸入系統等核心知識在Android中的實作原理。
透過大量情境圖片與實例來引導讀者學習,由總體框架再到細節實作,
為讀者提供由“整體到局部”、“由點及面”的科學方法,全面理解Android內核提供“思維捷徑”
明白“是什麼”、“有什麼用”,然後才剖析“如何做到的”。
“Hello World”式的入門嚮導——結合編譯系統的架構和內部原理,為各廠商客製化自己的Android產品提供了參考範例。
根據多年的Android專案開發和培訓經驗,「研發人員(包括系統開發和應用程式開發)參與實際Android專案所需具備的知識」,
如Intent匹配規則、應用程式的資源適配過程、字元編碼的處理、Widget機制、應用程式的編譯封裝等。
包含「Android和OpenGL ES、資訊安全基礎概述」等大部分相關書籍未涵蓋的Android「根基」——經久不衰的知識理論。
本書所闡述的知識點大部分來源於專案研發的經驗總結,因而具有較強的實用性,做到真正貼近讀者,貼近開發需求。
《深入理解Android內核設計思想》既適合Android系統工程師,也適合於應用開發工程師來閱讀提升Android開發能力。
讀者可以在《深入理解Android內核設計思想》潛移默化的學習過程中更深刻地理解Android系統,並將所學知識自然地應用到實際開發難題的解決中。
(1)透過大量情景圖片與實例引導讀者學習,提供更易於理解內核思想的“思維捷徑”
(2)本書的出發點仍是作業系統的經典原理根基——貫穿其中的是經久不衰的理論知識
(3)內容由淺入深、由總體框架再到細節實作。盡可能避免閱讀技術書籍時“看了後面忘了前面”的現象
(4)許多書籍仍停留在Android 2.3或者更早期的版本。雖然原理類似,但對於專案研發需要最新的開發版本
(5)“Hello World”式的入門嚮導——結合編譯系統的架構和內部原理,為客製化Android產品提供範例
(6)所闡述的知識點源於專案研發的經驗總結,因而具有較強的實用性,做到真正貼近讀者符合開發需求
作者簡介:
林學森
香港中文大學電腦碩士,
曾于多家跨國企業擔任研發和管理工作,並已在國內外會議、雜誌上發表多篇文章。
現為某行業知名企業Android軟體創始人、負責人。有豐富的技術研發與專案管理經驗,
擅長作業系統架構設計與內核分析。
目錄
Part 3 應用原理篇
Chapter 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
Chapter 14 Intent 的匹配規則
14-1 Intent 屬性
14-2 Intent 的匹配規則
14-3 Intent 匹配程式碼簡析
Chapter 15 APK 應用程式的資源適配
15-1 資源類型
15.1.1 狀態顏色資源
15.1.2 圖形資源
15.1.3 佈局資源
15.1.4 選單資源
15.1.5 字串資源
15.1.6 樣式資源
15.1.7 其他資源
15.1.8 屬性資源
15-2 提供可選資源
15-3 最佳資源的匹配流程
15-4 螢幕適配
15.4.1 螢幕適配的重要參數
15.4.2 如何適配多螢幕
Chapter 16 Android 字元編碼格式
16-1 字元編碼格式背景
16-2 ISO/IEC 8859
16-3 ISO/IEC 10646
16-4 Unicode
16-5 String 類型
16.5.1 建構String
16.5.2 String 對多種編碼的相容
Chapter 17 Android 和OpenGL ES
17-1 3D 圖形學基礎
17.1.1 電腦3D 圖形
17.1.2 圖形管線
17-2 Android 中的OpenGL ES 簡介
17-3 繪圖渲染API—EGL
17.3.1 EGL 與OpenGL ES
17.3.2 egl.cfg
17.3.3 EGL 介面解析
17.3.4 EGL 物件
17-4 簡化OpenGL ES 開發,GLSurfaceView
Chapter 18 「系統的UI」—SystemUI
18-1 SystemUI 的組成元素
18-2 SystemUI 的實作
18-3 Android 桌布資源,WallpaperService
18.3.1 WallPaperManagerService
18.3.2 ImageWallpaper
Chapter 19 Android 常用的工具「外掛程式」
—Widget 機制
19-1 「功能的提供者」,AppWidgetProvider
19-2 AppWidgetHost
Chapter 20 Android 應用程式的編譯和封裝
20-1 「另闢蹊徑」採用協力廠商工具,Ant
20-2 透過命令列編譯和封裝APK
20-3 APK 編譯過程詳解
20-4 資訊安全基礎概述
20-5 應用程式簽名
20-6 應用程式簽名程式碼簡析
Part 4 Android 系統工具
Chapter 21 軟體版本管理
21-1 版本管理簡述
21-2 Git 的安裝
21.2.1 Linux 環境下安裝Git
21.2.2 Windows 環境下安裝Git
21-3 Git 的使用
21.3.1 基礎設定
21.3.2 新增倉庫
21.3.3 檔案狀態
21.3.4 忽略某些檔案
21.3.5 傳送更新
21.3.6 其他命令
21-4 Git 原理簡析
21.4.1 分散式版本系統的特點
21.4.2 安全散列演算法,SHA-1
21.4.3 四個重要物件
21.4.4 三個區域
21.4.5 分支的概念與物件
Chapter 22 系統測試輔助工具
22-1 萬能模擬器——Emulator
22.1.1 QEMU
22.1.2 Android 專案中的QEMU
22.1.3 模擬器控制台(Emulator Console)
22.1.4 物件:為Android 模擬器增加連接埠功能
22-2 此Android 非彼Android
22-3 快速建立與模擬器或實機的通訊管道——ADB
22.3.1 ADB 的使用方法
22.3.2 ADB 的組成元素
22.3.3 ADB 原始程式碼解析
22.3.4 ADB Protocol
Part 3 應用原理篇
Chapter 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的迴...