1. 程式人生 > >android學習的幾本書:深入理解Android核心設計思想

android學習的幾本書:深入理解Android核心設計思想

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

http://download.csdn.net/download/hx0_0_8/8425385

第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 音量控制 

相關推薦

android學習本書深入理解Android核心設計思想

《深入理解Android核心設計思想》適用於Android 4.3以上的版本。全書從作業系統的基礎知識入手,全面剖析程序/執行緒、記憶體管理、Binder機制、GUI顯示系統、多媒體管理、輸入系統等核心技術在Android中的實現原理。書中講述的知識點大部分來源於工程專案

java srping 原始碼分析 深入理解低層設計思想

  原始碼分析---SPRING 專案介紹 1. Spring框架簡介 作為應用程式開發人員,您可以從Spring平臺中受益的示例如下: 使Java方法在資料庫事務中執行,而不必處理事務API。 使本地Java方法成為HTTP端點,而無需處理Servlet

Android 異步消息處理機制前篇(二)深入理解Message消息池

連接 guid ply 指針 cau ann 區別 就會 消息處理機制 版權聲明:本文出自汪磊的博客,轉載請務必註明出處。 上一篇中共同探討了ThreadLocal,這篇我們一起看下常提到的Message消息池到底是怎麽回事,廢話少說吧,進入正題。 對於稍有經驗的開發人員來

深入理解Android(一)Gradle詳解

作者 鄧凡平 編者按:隨著移動裝置硬體能力的提升,Android系統開放的特質開始顯現,各種開發的奇技淫巧、黑科技不斷湧現,InfoQ特聯合《深入理解Android》系列圖書作者鄧凡平,開設深入理解Android專欄,探索Android從框架到應用開

深入理解android Wi-Fi模組學習總結——WifiService

除了看原始碼外,我結合博文和書籍一起理解,這裡推薦幾篇博文和一本書: http://blog.csdn.net/u013467735/article/details/42487537 http://blog.csdn.net/u013467735/article/detai

深入理解Android Binder機制的

Android系統Binder機制中的四個元件:Client,Server,Service Manager和Binder驅動程式。 1. Client、Server和Service Manager實現在使用者空間中,Binder驅動程式實現在核心空間中 2. Binder

Android學習筆記三用Intent串聯activity

conda data activity setresult result 意圖 prot 其他 cte 一:Intent Intent可以理解為 意圖。 我們可以通過創建intent實例來定義一個跳轉意圖,意圖包括:要跳轉到哪個頁面、需要傳遞什麽

Android學習筆記十異步處理

cit inb 取消 cti post 動態顯示 模式 一次 工作原理 轉載請註明原文地址:http://www.cnblogs.com/ygj0930/p/7520700.html 一:基礎概念 UI線程:當Android程序第一次啟動時,Androi

java基礎學習總結(十二)深入理解java內部類

內部類 內部類也是語法糖,是因為它僅僅是一個編譯時的概念,outer.java裡面定義了一個內部類inner,一旦編譯成功,就會生成兩個完全不同的.class檔案了,分別是outer.class和outer$inner.class。所以內部類的名字完全可以和它的外部類名字相同。 內部類分為四

java基礎學習總結(九)深入理解Java泛型

一、什麼是泛型         “泛型” 意味著編寫的程式碼可以被不同型別的物件所重用。泛型的提出是為了編寫重用性更好的程式碼。泛型的本質是引數化型別,也就是說所操作的資料型別被指定為一個引數。 比如常見的集合類 LinkedList: publi

深入理解 Android Https

前言 大家都知道https相比http增加的是安全性。 怎麼增加安全性呢? 就是加密和解密步驟。 下面來詳細談談對https的理解和在Android中的使用. 兩種加密 加密方式分兩種,對稱加密和非對稱加密。這兩種方式都有自己的優劣勢, https中這兩種方式都採用了。 我們約定S是服務端,C是客戶端,

深入理解Android Gradle

深入理解Android Gradle 標籤(空格分隔): 未分類 原作者真的寫的很棒附上鍊接 新的android開發工具引用了Gradle構建工具,方便了開發者進行構建不同的應用版本以完成不同的需求。(從此多版本不再痛苦) 1. gradle基本語法 新建專案

深入理解Android 卷III》第八章深入理解Android桌布(節選)

                      第8章 深入理解Android桌布(節選) 本章主要內容: ·  討論動態桌布的實現。 ·  在動態桌布的基礎上討論靜態桌布的實現。 ·  討論WMS對桌布視窗所做的特殊處理。 本章涉及的原始碼檔名及位置: ·  Wal

深入理解Android Bitmap的各種操作

文章目錄 一、Bitmap 1.1 Bitmap的建立 1.1.1 根據已有的Bitmap來建立新Bitmap 1.1.2 通過畫素點陣列建立空的Bitmap 1.1.3 建立縮放的Bit

深入理解Android的startservice和bindservice

一、首先,讓我們確認下什麼是service?          service就是android系統中的服務,它有這麼幾個特點:它無法與使用者直接進行互動、它必須由使用者或者其他程式顯式的啟動、它的優先順序比較高,它比處於前臺的應用優先順序低,但是比後臺的其他應用優先順序高,

深入理解Android之View的繪製流程

本篇文章會從原始碼(基於Android 6.0)角度分析Android中View的繪製流程,側重於對整體流程的分析,對一些難以理解的點加以重點闡述,目的是把View繪製的整個流程把握好,而對於特定實現細節則可以日後再對相應原始碼進行研讀。 在進行實際的分析之前,我們先來看下面

Android學習筆記1基於監聽的事件處理過程

基於監聽的事件處理過程 記錄一:安卓介面互動處理事件的兩個方式 (1)基於監聽的事件處理 (2)基於回撥的事件處理 基於回撥的事件處理日後再寫,先學習基於監聽的事件處理 通常以下步驟: (1)例項化物件 (2)為事件源物件新增監聽器物件,例如set...List

Android 深入理解Android中的自定義屬性

1、引言 對於自定義屬性,大家肯定都不陌生,遵循以下幾步,就可以實現: 自定義一個CustomView(extends View )類 編寫values/attrs.xml,在其中編寫styleable和item等標籤元素 在佈局檔案中CustomView使用自定義的屬性(

深入理解Android之Xposed詳解

一、背景Xposed,大名鼎鼎得Xposed,是Android平臺上最負盛名的一個框架。在這個框架下,我們可以載入很多外掛App,這些外掛App可以直接或間接操縱系統層面的東西,比如操縱一些本來只對系統廠商才open的功能(實際上是因為Android系統很多API是不公開的,

深入理解 Android 中的各種 Context

前言 網上關於 Context 的文章也已經有不少了,比如值得參考的有: Android Context完全解析,你所不知道的Context的各種細節 Android Context 到底是什麼? 但看了一下,發現還有值得討論的地方,比如這個等式: Context個數 = Service 個數 + Ac