TOP
月月讀書金,登入即領,滿600現折50!!
深入理解Android內核設計思想(簡體書)
滿額折

深入理解Android內核設計思想(簡體書)

商品資訊

人民幣定價:108 元
定價
:NT$ 648 元
優惠價
87564
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點 :16 點
商品簡介
作者簡介
名人推薦
目次

商品簡介

《深入理解Android內核設計思想》適用于Android 4.3以上的版本。全書從操作系統的基礎知識入手,全面剖析進程/線程、內存管理、Binder機制、GUI顯示系統、多媒體管理、輸入系統等核心技術在Android中的實現原理。書中講述的知識點大部分來源于工程項目研發,因而具有較強的實用性,希望可以讓讀者“知其然,更知其所以然”。全書分為編譯篇、系統原理篇、應用原理篇、系統工具篇共4篇22章,基本涵蓋了參與Android開發所需具備的知識,并通過大量圖片與實例來引導讀者學習,以求盡量在源代碼分析外為讀者提供更易于理解的思維方式。
《深入理解Android內核設計思想》既適合Android系統工程師,也適合于應用開發工程師來閱讀提升Android開發能力。讀者可以在《深入理解Android內核設計思想》潛移默化的學習過程中更深刻地理解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篇 應用原理篇
第14章 Intent的匹配規則 
14.1 Intent屬性 
14.2 Intent的匹配規則 
14.3 Intent匹配源碼簡析 
第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 如何適配多屏幕 
第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對多種編碼的兼容 
第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 
第18章 “系統的UI”——SystemUI 
18.1 SystemUI的組成元素 
18.2 SystemUI的實現 
18.3 Android壁紙資源——WallpaperService 
18.3.1 WallPaperManagerService 
18.3.2 ImageWallpaper 
第19章 Android常用的工具“小插件”——Widget機制 
19.1 “功能的提供者”——AppWidgetProvider 
19.2 AppWidgetHost 
第20章 Android應用程序的編譯和打包 
20.1 “另辟蹊徑”采用第三方工具——Ant 
20.2 通過命令行編譯和打包APK 
20.3 APK編譯過程詳解 
20.4 信息安全基礎概述 
20.5 應用程序簽名 
20.6 應用程序簽名源碼簡析 
第4篇 Android系統工具
第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 分支的概念與實例 
第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

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 564
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區