-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深入理解Android系統

( 簡體 字)
作者:張元亮類別:1. -> 程式設計 -> 手機程式 -> Android
譯者:
出版社:清華大學出版社深入理解Android系統 3dWoo書號: 42243
詢問書籍請說出此書號!

缺書
NT售價: 440

出版日:7/1/2015
頁數:695
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302404392
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

  2007年11月5日,谷歌公司宣布基于Linux平臺的開源手機操作系統Android誕生,該平臺號稱是首個為移動終端打造的真正開放和完整的移動軟件平臺。本書將和廣大讀者一起深入理解Android系統的架構知識,共同領略這款神奇系統的奧妙之處。
市場占有率高居第一
  截至2014年9月,Android在智能手機市場上的占有率從2013年第一季度的68.8%上升到85%。而iOS則從2013年的19.4%下降到15.5%,WP系統從原來的2.7%小幅上升到3.6%。從數據上看,Android平臺占據了市場的主導地位。
  由數據可知,iOS有所下降,WP市場小幅增長,但Android市場的占有率增加幅度較大。就目前來看,智能手機的市場已經飽和,大多數用戶都在各個平臺間轉換。而就在這樣一個市場上,Android還增長了10%左右的占有率確實不易。
為開發人員提供了發展的平臺
  (1)保證開發人員可以迅速向Android應用開發轉型
  Android應用程序是使用Java語言開發的,只要具備Java開發基礎,就能很快入門并掌握。作為單獨的Android應用開發,對Java編程門檻的要求并不高,即使沒有編程經驗,也可以在突擊學習Java之后學習Android。另外,Android完全支持2D、3D和數據庫,并且和瀏覽器實現了集成。所以通過Android平臺,程序員可以迅速、高效地開發出絢麗多彩的應用,例如常見的工具、管理軟件、互聯網應用和游戲等。
  (2)定期舉辦獎金豐厚的Android開發大賽
  為了吸引更多的用戶使用Android開發,已經成功舉辦了獎金為數千萬美元的開發者競賽。鼓勵開發人員創建出創意十足且實用的軟件。對于開發人員來說,這種大賽不但能提升自己的開發水平,并且高額的獎金也是學員們學習的動力。
  (3)開發人員可以利用自己的作品賺錢
  為了能讓Android平臺引起更多的關注,谷歌提供了一個專門下載Android應用的門店Android Market,地址是https://play.google.com/store。在這個門店里面允許開發人員發布應用程序,也允許Android用戶下載自己喜歡的程序。作為開發者,需要申請開發者賬號,申請后才能將自己的程序上傳到Android Market,并且可以對自己的軟件進行定價。只要所開發的軟件程序足夠吸引人,就可以獲得很可觀的金錢回報。這樣實現了程序員學習和賺錢的兩不誤,所以吸引了更多開發人員加入到Android開發大軍中來。

本書的內容
  本書內容共18章,循序漸進地分析了整個Android系統的基本架構知識。本書從獲取源碼開始講起,依次講解了Android系統介紹,包括獲取并編譯Android源碼,分析JNI,內存系統架構詳解,硬件抽象層架構詳解,Binder通信機制詳解,init啟動進程詳解,Zygote進程詳解,System進程詳解,應用程序進程詳解,Sensor傳感器系統架構詳解,藍牙系統架構詳解,Android多媒體框架架構詳解,音頻系統框架架構詳解,視頻系統架構詳解,WebKit系統架構詳解,Android 5.0中的WebView,Wi-Fi系統架構詳解,ART機制架構詳解等內容。本書幾乎涵蓋了所有Android系統架構的主要核心內容,講解方法通俗易懂并且詳細,不但適合應用高手們學習,也特別便于初學者學習和理解。
本書的版本
  Android系統自2008年9月發布第一個版本1.1以來,截至2014年10月發布最新版本5.0,一共存在十多個版本。由此可見,Android系統升級頻率較快,一年之中最少有兩個新版本誕生。如果過于追求新版本,會造成力不從心的結果。所以在此建議廣大讀者不必追求最新的版本,只需關注最流行的版本即可。據官方統計,截至2014年11月10日,占據前3位的版本分別是Android 4.4、Android 4.3和Android?5.0,其實這3個版本的區別并不是很大,只是在某些領域的細節上進行了更新。為了在市場普及率和新版本之間做好兼顧,本書將以最新的Android?5.0作為講解主線,并且結合了Android 4.4的架構知識。
本書特色
  本書內容十分豐富,講解細致。我們的目標是通過一本圖書,提供多本圖書的價值,讀者可以根據自己的需要有選擇地閱讀。在內容的編寫上,本書具有以下特色。
  (1)內容全面,講解細致
  本書幾乎涵蓋了Android系統架構所需要的所有主要知識點,詳細講解了每一個Android系統的具體實現過程。每一個知識點都力求用詳實易懂的語言展現在讀者面前。
  (2)遵循合理的主線進行講解
  為了使廣大讀者徹底弄清楚Android系統架構的各個知識點,在講解每一個知識點時,從Linux內核開始講起,依次剖析了底層架構、API硬件抽象層和頂層應用的具體知識。遵循了從底層到頂層的順序,實現了Android系統架構大揭秘的目標。
  (3)章節獨立,自由閱讀
  本書中的每一章內容都可以獨自成書,讀者既可以按照本書編排的章節順序進行學習,也可以根據自己的需求對某一章節進行針對性的學習。并且和傳統古板的計算機書籍相比,閱讀本書會帶來很大的快樂。
  (4)版本新穎,代表性強
  本書以最新的Android 5.0作為講解主線,結合Android 4.4的架構知識進行講解,這樣可以涵蓋大多數讀者群體,代表性更強。

本書的讀者對象
* Android源碼分析人員。
* Android系統架構師。
* Linux開發人員。
* Android物聯網開發人員。
* Android愛好者。
* Android底層開發人員。
* Android驅動開發人員。
* Android應用開發人員。
* Android傳感器開發人員。
* Android智能家居開發人員。
* Android可穿戴設備開發人員。
* 相關培訓學校的學生。
* 相關大專院校的學生。
售后服務
  參與本書編寫的人員還有周秀、付松柏、鄧才兵、鐘世禮、譚貞軍、張加春、王教明、萬春潮、郭慧玲、侯恩靜、程娟、王文忠、陳強、何子夜、李天祥、周銳、朱桂英、張元亮、張韶青、秦丹楓。本書在編寫過程中,得到了清華大學出版社工作人員的大力支持,正是各位編輯的求實、耐心和效率,才使得本書在這么短的時間內出版。另外也十分感謝我的家人在我寫作時給予的巨大支持。
  由于編者水平有限,如有紕漏和不盡如人意之處,誠請讀者提出意見或建議,以便修訂并使之更臻完善。另外我們提供了售后支持網站(http://www.chubanbook.com/)和QQ群(192153124),讀者朋友如有疑問可以在此提出,一定會得到滿意的答復。
  
  
  編 者
  
  

  
  
  
II
  
  
III
  
  
  
  
  
  

內容簡介:

本書內容共18章,循序漸進地分析了整個Android系統的基本架構知識,從獲取源碼開始講起,依次講解了Android系統介紹,包括獲取并編譯Android源碼,分析JNI,內存系統架構詳解,硬件抽象層架構詳解,Binder通信機制詳解,init啟動進程詳解,Zygote進程詳解,System進程詳解,應用程序進程詳解,ART機制架構詳解,Sensor傳感器系統架構詳解,藍牙系統架構詳解,Android多媒體框架架構詳解,音頻系統框架架構詳解,視頻系統架構詳解,WebKit系統架構詳解,Android 5.0中的WebView,Wi-Fi系統架構詳解等內容。本書幾乎涵蓋了所有Android系統架構的主要核心內容,講解方法通俗易懂并且詳細,不但適合應用高手們學習,也特別便于初學者學習和理解。
本書適合Android源碼分析人員、Android系統架構師、Linux開發人員、Android物聯網開發人員、Android愛好者、Android底層開發人員、Android驅動開發人員、Android應用開發人員、Android傳感器開發人員、Android智能家居開發人員、Android可穿戴設備開發人員學習,也可以作為相關培訓學校和大專院校相關專業的教學用書。
目錄:

第1章  獲取并編譯Android源碼 1

1.1  獲取Android源碼 1

1.1.1  在Linux系統獲取Android源碼 1

1.1.2  在Windows平臺獲取Android源碼 3

1.2  分析Android源碼結構 6

1.2.1  總體結構 6

1.2.2  應用程序部分 7

1.2.3  應用程序框架部分 9

1.2.4  系統服務部分 10

1.2.5  系統程序庫部分 12

1.2.6  系統運行庫部分 15

1.2.7  硬件抽象層部分 16

1.3  分析源碼中提供的接口 17

1.3.1  暴露接口和隱藏接口 17

1.3.2  調用隱藏接口 23

1.4  編譯源碼 26

1.4.1  搭建編譯環境 26

1.4.2  在模擬器中運行 29

1.5  編譯源碼生成SDK 30

第2章  分析JNI 35

2.1  JNI基礎 35

2.1.1  JNI的功能結構 35

2.1.2  JNI的調用層次 36

2.1.3  分析JNI的本質 36

2.2  分析MediaScanner 38

2.2.1  分析Java層 38

2.2.2  分析JNI層 45

2.2.3  分析Native(本地)層 46

2.3  分析Camera系統的JNI 54

2.3.1  Java層預覽接口 54

2.3.2  注冊預覽的JNI函數 56

2.3.3  C/C++層的預覽函數 59

2.4  Java與JNI基本數據類型轉換 60

2.5  JNIEnv接口 61

2.6  開發JNI程序 62

2.6.1  開發JNI程序的步驟 62

2.6.2  開發一個自己的JNI程序 63

第3章  內存系統架構詳解 66

3.1  分析Android的進程通信機制 66

3.1.1  IPC機制介紹 66

3.1.2  Service Manager是Binder機制的上下文管

理者 67

3.1.3  Service Manager服務 84

3.2  分析匿名共享內存子系統 87

3.2.1  Ashmem系統基礎 87

3.2.2  基礎數據結構 88

3.2.3  初始化處理 89

3.2.4  打開匿名共享內存設備文件 90

3.2.5  實現內存映射 93

3.2.6  實現讀/寫操作 94

3.2.7  實現鎖定和解鎖 96

3.2.8  回收內存塊 102

3.3  分析C++訪問接口層 103

3.3.1  接口MemoryHeapBase 103

3.3.2  接口MemoryBase 112

3.4  分析Java訪問接口層 115

第4章  硬件抽象層架構詳解 120

4.1  HAL基礎 120

4.1.1  推出HAL的背景 120

4.1.2  HAL的基本結構 121

4.2  分析HAL module架構 123

4.2.1  hw_module_t 124

4.2.2  hw_module_methods_t 124

4.2.3  hw_device_t 125

4.3  分析文件hardware.c 126

4.3.1  尋找動態鏈接庫的地址 126

4.3.2  數組variant_keys 126

4.3.3  載入相應的庫 127

4.3.4  獲得hw_module_t結構體 127

4.4  分析硬件抽象層的加載過程 128

4.5  分析硬件訪問服務 132

4.5.1  定義硬件訪問服務接口 132

4.5.2  具體實現 133

4.6  分析官方實例 134

4.6.1  獲取實例工程源碼 135

4.6.2  直接調用service()方法的實現代碼 136

4.6.3  通過Manager調用service的實現代碼 141

4.7  HAL和系統移植 144

4.7.1  移植各個Android部件的方式 144

4.7.2  設置設備權限 144

4.7.3  init.rc初始化 148

4.7.4  文件系統的屬性 148

4.8  開發自己的HAL 150

4.8.1  封裝HAL接口 150

4.8.2  開始編譯 153

第5章  Binder通信機制詳解 155

5.1  分析Binder驅動程序 155

5.1.1  數據結構binder_work 155

5.1.2  結構體binder_node 156

5.1.3  結構體binder_ref 157

5.1.4  通知結構體binder_ref_death 158

5.1.5  結構體binder_buffer 158

5.1.6  結構體binder_proc 159

5.1.7  結構體binder_thread 160

5.1.8  結構體binder_transaction 161

5.1.9  結構體binder_write_read 162

5.1.10  BinderDriverCommandProtocol 162

5.1.11  枚舉BinderDriverReturnProtocol 163

5.1.12  結構體binder_ptr_cookie和

binder_transaction_data 164

5.1.13  結構體flat_binder_object 164

5.1.14  設備初始化 165

5.1.15  打開Binder設備文件 167

5.1.16  實現內存映射 168

5.1.17  釋放物理頁面 173

5.1.18  分配內核緩沖區 174

5.1.19  釋放內核緩沖區 176

5.1.20  查詢內核緩沖區 179

5.2  Binder封裝庫 179

5.2.1  Binder的3層結構 180

5.2.2  類BBinder 181

5.2.3  類BpRefBase 183

5.2.4  類IPCThreadState 185

5.3  初始化Java層Binder框架 188

5.3.1  搭建交互關系 188

5.3.2  實現Binder類的初始化 188

5.3.3  實現BinderProxy類的初始化 190

5.4  實體對象binder_node 190

5.4.1  定義實體對象 191

5.4.2  增加引用計數 192

5.4.3  減少引用計數 193

5.5  本地對象BBinder 194

5.5.1  引用了運行的本地對象 195

5.5.2  處理接口協議 201

5.6  引用對象binder_ref 205

5.7  代理對象BpBinder 208

5.7.1  創建Binder代理對象 208

5.7.2  銷毀Binder代理對象 209

第6章  init啟動進程詳解 213

6.1  什么是init進程 213

6.2  入口函數 214

6.3  init配置文件 217

6.3.1  init.rc基礎 217

6.3.2  init.rc解析 219

6.4  解析Service 223

6.4.1  Zygote對應的service action 224

6.4.2  init組織Service 224

6.4.3  解析Service用到的函數 226

6.5  解析on 230

6.5.1  Zygote對應的on action 230

6.5.2  結構體action 232

6.5.3  解析on字段所在的option 232

6.6  init控制Service 233

6.6.1  啟動Zygote 233

6.6.2  啟動Service 234

6.6.3  總結4種啟動Service的方式 238

6.7  啟動屬性服務 243

6.7.1  引入屬性 243

6.7.2  設置內核變量 245

6.7.3  初始化屬性服務 246

6.7.4  實現具體啟動工作 247

6.7.5  獲取屬性值 249

6.7.6  處理請求 251

第7章  Zygote進程詳解 253

7.1  Zygote基礎 253

7.2  啟動Zygote 254

7.2.1  init.c啟動腳本 254

7.2.2  創建一個Socket 258

7.2.3  入口函數main() 260

7.2.4  啟動函數創建一個虛擬機實例 262

7.2.5  和Zygote進程中的Socket實現連接 264

第8章  System進程詳解 271

8.1  啟動前的準備 271

8.1.1  獲取創建的Socket 271

8.1.2  啟動System進程 272

8.2  分析SystemServer 272

8.2.1  分析主函數main() 272

8.2.2  分析函數init2() 275

8.3  第一個啟動的ServiceEntropyService 275

8.3.1  將內容寫到urandom設備 276

8.3.2  將和設備相關的信息寫到urandom設備 277

8.3.3  讀取urandom設備的內容 277

8.3.4  發送ENTROPY_WHAT 278

8.4  生成并管理日志文件 278

8.4.1  分析DBMS構造函數 278

8.4.2  添加dropbox日志文件 280

8.4.3  DBMS和settings數據庫 284

8.5  分析DiskStatsService 285

8.6  監測系統內部存儲空間的狀態 289

8.6.1  構造函數 289

8.6.2  內存檢查 290

8.7  分析實現性能統計 292

8.7.1  構造函數 292

8.7.2  進行性能統計 293

8.7.3  輸出統計文件 295

8.8  剪貼板服務 302

8.8.1  復制數據到剪貼板 302

8.8.2  從剪貼板粘貼數據 304

8.8.3  管理CBS中的權限 306

第9章  應用程序進程詳解 309

9.1  創建應用程序 309

9.1.1  發送創建請求 309

9.1.2  保存啟動參數 312

9.1.3  創建指定的應用程序 314

9.1.4  創建本地對象LocalSocket 315

9.1.5  接收創建新應用程序的請求 316

9.2  啟動線程池 320

9.3  創建信息循環 322

第10章  ART機制架構詳解 324

10.1  分析ART的啟動過程 324

10.1.1  運行 app_process 進程 325

10.1.2  準備啟動 329

10.1.3  創建運行實例 336

10.1.4  注冊本地JNI函數 338

10.1.5  啟動守護進程 339

10.1.6  解析參數 340

10.1.7  初始化類、方法和域 350

10.2  進入main()主函數 357

10.3  查找目標類 358

10.3.1  函數LookupClass() 359

10.3.2  函數DefineClass() 361

10.3.3  函數InsertClass() 365

10.3.4  函數LinkClass() 366

10.4  類操作 368

10.5  實現托管操作 370

第11章  Sensor傳感器系統架構詳解 376

11.1  Android傳感器系統概述 376

11.2  Java層詳解 377

11.3  Frameworks層詳解 383

11.3.1  監聽傳感器的變化 383

11.3.2  注冊監聽 384

11.4  JNI層詳解 396

11.4.1  實現Native(本地)函數 396

11.4.2  處理客戶端數據 401

11.4.3  處理服務端數據 403

11.4.4  封裝HAL層的代碼 417

11.4.5  處理消息隊列 422

11.5  HAL層詳解 425

第12章  藍牙系統架構詳解 435

12.1  短距離無線通信技術概覽 435

12.1.1  ZigBee——低功耗、自組網 435

12.1.2  Wi-Fi——大帶寬支持家庭互聯 435

12.1.3  藍牙——4.0進入低功耗時代 436

12.1.4  NFC——必將逐漸遠離歷史舞臺 436

12.2  藍牙技術基礎 437

12.2.1  藍牙技術的發展歷程 437

12.2.2  低功耗藍牙的特點 437

12.2.3  低功耗藍牙的架構 438

12.2.4  低功耗藍牙分類 439

12.2.5  集成方式 439

12.2.6  BLE和傳統藍牙BR/EDR技術的對比 440

12.3  藍牙規范詳解 440

12.3.1  Bluetooth 系統中的常用規范 441

12.3.2  藍牙協議體系結構 441

12.3.3  低功耗(BLE)藍牙協議 443

12.3.4  現有的基于GATT的協議/服務 443

12.3.5  雙模協議棧 444

12.3.6  單模協議棧 445

12.4  低功耗藍牙協議棧詳解 445

12.4.1  低功耗藍牙協議棧基礎 445

12.4.2  藍牙協議體系中的協議 446

12.5  TI公司的低功耗藍牙 448

12.5.1  獲取TI公司的低功耗藍牙協議棧 448

12.5.2  分析TI公司的低功耗藍牙協議棧 450

12.6  分析Android系統中的藍牙模塊 456

12.7  分析藍牙模塊的源碼 458

12.7.1  初始化藍牙芯片 458

12.7.2  藍牙服務 458

12.7.3  管理藍牙電源 459

12.8  Android系統的低功耗藍牙協議棧 459

12.8.1  Android低功耗藍牙協議棧基礎 460

12.8.2  低功耗藍牙API詳解 460

第13章  Android多媒體框架架構詳解 498

13.1  Android多媒體系統介紹 498

13.2  OpenMax框架詳解 499

13.2.1  分析OpenMax框架構成 500

13.2.2  實現OpenMax IL層接口 504

13.3  OpenCore框架詳解 512

13.3.1  OpenCore層次結構 512

13.3.2  OpenCore代碼結構 513

13.3.3  OpenCore編譯結構 514

13.3.4  操作系統兼容庫 518

13.3.5  實現OpenCore中的OpenMax部分 520

13.4  StageFright框架詳解 532

13.4.1  StageFright代碼結構 533

13.4.2  StageFright實現OpenMax接口 533

13.4.3  分析Video Buffer傳輸流程 537

第14章  音頻系統框架架構詳解 554

14.1  硬件架構的發展趨勢 554

14.1.1  原始架構模式 554

14.1.2  移動處理器的解決方案 554

14.1.3  升級版高通驍龍801 555

14.2  音頻系統基礎 557

14.3  音頻系統的層次 559

14.3.1  層次說明 559

14.3.2  Media庫中的Audio框架 559

14.3.3  本地代碼 562

14.3.4  分析JNI代碼 564

14.3.5  分析Java層代碼 565

14.4  Audio系統的硬件抽象層 567

14.4.1  Audio硬件抽象層基礎 568

14.4.2  AudioFlinger中的Audio硬件抽象層的

實現 569

14.4.3  真正實現Audio硬件抽象層 575

14.5  Kernel Driver實現 575

14.6  實現編/解碼過程 582

14.6.1  AMR編碼 583

14.6.2  AMR解碼 587

14.6.3  解碼MP3 591

第15章  視頻系統架構詳解 594

15.1  視頻輸出系統 594

15.1.1  基本層次結構 594

15.1.2  硬件抽象層架構 595

15.2  MediaPlayer架構詳解 602

15.2.1  MediaPlayer架構圖解 602

15.2.2  MediaPlayer的接口與架構 603

15.2.3  分析Java部分 610

15.2.4  分析JNI部分 614

15.2.5  核心庫libmedia.so 618

15.2.6  服務庫libmediaservice.so 621

15.2.7  OpenCorePlayer實現

libopencoreplayer.so 622

15.2.8  對MediaPlayer的總結 622

15.3  VideoView詳解 628

15.3.1  構造函數 628

15.3.2  公共方法 629

第16章  WebKit系統架構詳解 635

16.1  WebKit系統目錄 635

16.2  Java層的基本框架 636

16.3  Java層的主要類 637

16.3.1  WebView簡介 637

16.3.2  WebViewDatabase 638

16.3.3  WebViewCore 638

16.3.4  CallbackProxy 638

  

16.3.5  BrowserFrame 639

16.3.6  JWebCoreJavaBridge 639

16.3.7  DownloadManagerCore 639

16.3.8  其他類 639

16.4  數據載入器架構 639

16.5  Java層對應的C/C++類庫 640

16.6  分析WebKit的操作過程 642

16.6.1  WebKit初始化 642

16.6.2  載入數據 644

16.6.3  刷新繪制 644

16.7  WebViewCore詳解 645

第17章  Android 5.0中的WebView 652

17.1  WebView架構基礎 652

17.2  WebView類簡介 654

17.3  WebViewProvider接口 656

17.4  WebViewChromium詳解 659

17.5  WebViewChromiumFactoryProvider

詳解 660

17.6  AwContents架構 663

17.7  實現Mixed Content模式 666

17.8  引入第三方Cookie 667

第18章  Wi-Fi系統架構詳解 670

18.1  Wi-Fi系統基礎 670

18.2  Wi-Fi本地部分架構 672

18.3  Wi-Fi JNI部分架構 676

18.4  Java FrameWork部分的源碼 677

18.4.1  WifiManager詳解 678

18.4.2  WifiService詳解 679

18.4.3  WifiWatchdogService詳解 688

18.5  Setting設置架構 689

  

  

  

VIII

  

  

IX

  

  

  

  

  

  

序: