-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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書號: 41277
詢問書籍請說出此書號!

缺書
NT售價: 445

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

譯者序:

前言:

Android(中文譯名為安卓)是IT界巨頭Google(谷歌)公司于2007年11月5日推出的一款智能操作系統,最初被應用于智能手機,后來隨著版本的更新和發展,也被廣泛應用于平板電腦、智能電視、可穿戴設備和健康設備中。Android是一款基于Linux平臺的開源操作系統的名稱,根據國際數據公司(IDC)公布的數據,Android在智能手機操作系統中的市場占有率已經達到75%。
高份額的市場占有率使得更多的開發人員把目光投入這款神奇的系統,很多初學者也紛紛涌入Android的學習行列中,配合這些需求,Android的各種應用類圖書不斷涌現并廣受歡迎。但美中不足的是,深入源碼分析的書籍屈指可數。而源碼分析正是通往Android殿堂、躋身為高手的階梯。
為了讓廣大初學者可以對Android系統實現“靈與肉”的感知,而不是停留在抽象的原理和概念上,本書對Android系統的源碼進行細致的分析,這樣做的目的,是提煉出Android系統埋藏于深處的本質和精華的東西,以展示這款神奇的系統究竟是怎樣實現的。
1.本書內容
Android系統升級較快,有些代碼變動很大。系統自2007年發布第一個版本1.1以來,截至2013年7月發布版本4.3,中間一共存在十多個版本。但據官方統計,到2013年5月5日,占據前三位的版本分別是Android 4.2,Android 4.1和Android 4.3,其實這三個版本的區別并不是很大,只是在某領域的細節上進行了更新。因此,在本書中,我們選擇本書最初寫作時的最新版本Android 4.3系統的實現。
本書共分15章,依次為走進Android世界、硬件抽象層詳解、分析JNI(Java本地接口)層、Android內存系統分析、Android虛擬機系統詳解、IPC通信機制詳解、Zygote進程/System進程和應用程序進程、分析Activity組件、Content Provider數據存儲、Broadcast(廣播)系統詳解、多媒體系統詳解、電源管理系統詳解、輸入系統驅動應用、藍牙系統詳解、網絡系統詳解。
本書幾乎涵蓋Android源碼中的所有核心系統的內容,全書通俗易懂,特別有利于初學者學習和消化。
2.本書特色
本書內容十分豐富,分析細致、全面。我們的目標是通過一本圖書,提供多本圖書的價值,讀者可以根據自己的需要,有選擇地閱讀。
在內容的編寫上,本書具有以下特色。
(1) 結構合理
從用戶的實際需要出發,科學安排知識結構。全書詳細地講解與Android應用開發有關的源碼,內容循序漸進,由淺入深。
(2) 易學易懂
本書條理清晰、語言簡潔,可幫助讀者快速掌握每個知識點,使讀者既可以按照本書編排的章節順序進行學習,也可以根據自己的需求,對某一章節進行有針對性的學習。
(3) 實用性強
本書徹底摒棄枯燥的理論知識羅列,注重實用性和可操作性,通過細膩的筆法,逐步講解各個知識點的基本知識。
(4) 內容全面
本書是如今市面上“內容最全的Android源碼分析書”,無論是獲取源碼,還是各個常用、常見的模塊系統,在本書中您都能找到解決問題的答案。
3.讀者對象
本書適合下列人員閱讀和學習:
初學Android編程的自學者。
Android源碼分析人員。
Android底層開發人員。
Android系統開發人員。
相關培訓機構的教師和學員。
從事Android開發的程序員。
4.作者支持
在編寫此書的過程中,得到了清華大學出版社工作人員的大力支持,正是由于各位編輯的求實態度、耐心的工作和奉獻精神,才使得本書能夠快速出版。
另外也十分感謝我的家人在我寫作的時候給予的巨大支持。
由于作者水平有限,本書的疏漏之處在所難免,懇請讀者提出意見或建議,以便再版時修訂并使之更臻完善。我們提供了售后支持QQ(號碼為1727069718),讀者如有疑問可以通過QQ提出,將會得到滿意的答復。
編 者
內容簡介:

   Android是一款服務于智能手機和平板電腦等設備的操作系統,截止作者撰寫此書時為止,Android在智能手機操作系統市場中已經占有75%的份額。為了讓廣大讀者充分了解這款神奇的操作系統的架構原理,本書循序漸進地分析了Android系統核心源碼的基本知識。
   本書共分為15章,主要內容包括走進Android世界、硬件抽象層詳解、分析JNI(Java本地接口)層、Android內存系統分析、Android虛擬機系統詳解、IPC通信機制詳解、Zygote進程/System進程和應用程序進程、分析Activity組件、Content Provider數據存儲、Broadcast(廣播)系統詳解、多媒體系統詳解、電源管理系統詳解、輸入系統驅動應用、藍牙系統詳解、網絡系統詳解等。
   本書幾乎涵蓋了Android源碼中的所有核心系統的內容,全書內容通俗易懂,適合Android初學者、Android愛好者、Android底層開發人員、Android應用開發人員閱讀和學習,也可以作為相關培訓學校和大專院校相關專業的教學用書。

目錄:

第1章 走進Android世界 1
1.1 Android系統的優勢 2
1.1.1 開源 2
1.1.2 強大的開發團隊的支持 2
1.1.3 開發人員的支持 2
1.2 Android系統架構介紹 3
1.2.1 底層操作系統層(Linux內核層) 4
1.2.2 庫(Libraries)和運行環境(Runtime) 4
1.2.3 應用程序框架(ApplicationFramework) 5
1.2.4 頂層應用程序(Application) 5
1.3 核心組件 5
1.3.1 Activity的界面表現 5
1.3.2 Intent和IntentFilters界面切換 6
1.3.3 Service服務 6
1.3.4 用Broadcast IntentReceiver廣播 7
1.3.5 用Content Provider存儲 7
1.4 進程和線程 7
1.4.1 什么是進程 7
1.4.2 什么是線程 8
1.5 獲取Android 4.3源碼 8
1.5.1 在Linux系統中獲取Android源碼 8
1.5.2 在Windows平臺上獲取Android源碼 9
1.6 Android源碼結構分析 14
1.6.1 Android源碼的目錄結構 15
1.6.2 應用程序 16
1.6.3 應用程序框架 18
1.6.4 系統服務 19
1.6.5 系統程序庫 21
1.6.6 系統運行庫 24
1.6.7 硬件抽象層 25
1.7 編譯Android源碼 26
1.7.1 搭建編譯環境 27
1.7.2 開始編譯 27
1.7.3 在模擬器中運行 29
1.7.4 編譯源碼生成SDK 30
第2章 硬件抽象層詳解 35
2.1 什么是HAL層 36
2.1.1 為什么把對硬件的支持劃分為兩層來實現 36
2.1.2 HAL層的位置結構 36
2.2 分析HAL Module架構 38
2.2.1 hw_module_t 39
2.2.2 hw_module_methods_t 40
2.2.3 hw_device_t 40
2.3 分析文件hardware.c 41
2.3.1 函數hw_get_module 41
2.3.2 數組variant_keys 41
2.3.3 載入相應的庫 42
2.3.4 打開相應庫并獲得hw_module_t結構體 43
2.4 分析硬件抽象層的加載過程 44
2.5 分析硬件訪問服務 48
2.5.1 定義硬件訪問服務接口 48
2.5.2 實現硬件訪問服務 49
2.6 分析mokoid工程 50
2.6.1 直接調用Service方法實現 51
2.6.2 通過Manager調用Service實現 56
2.7 分析HAL層的具體實現(以Sensor系統為例) 59
2.7.1 傳感器系統的基礎知識 59
2.7.2 HAL層的Sensor代碼 60
2.7.3 Sensor編程的流程 61
第3章 分析JNI(Java本地接口)層 63
3.1 JNI基礎 64
3.1.1 JNI的層次結構 64
3.1.2 JNI的本質 64
3.1.3 與JNI相關的文件 65
3.2 分析Java層 66
3.2.1 加載JNI庫 66
3.2.2 實現掃描工作 68
3.2.3 讀取并保存信息 69
3.2.4 刪除不是SD卡中的文件信息 72
3.2.5 直接轉向JNI 72
3.2.6 掃描函數scanFile 73
3.2.7 異常處理 73
3.3 分析MediaScanner的JNI層 74
3.3.1 將Native對象的指針保存到Java對象 75
3.3.2 創建Native層的MediaScanner對象 75
3.4 分析MediaScanner的Native層 76
3.4.1 注冊JNI函數 76
3.4.2 完成注冊工作 78
3.4.3 動態注冊 80
3.4.4 處理路徑參數 82
3.4.5 掃描文件 83
3.4.6 添加TAG信息 83
3.4.7 JNIEnv接口 85
3.4.8 JNI中的環境變量 86
3.5 JNI實例分析(基于Camera系統) 87
3.5.1 Java層預覽接口 87
3.5.2 注冊預覽的JNI函數 89
3.5.3 C/C++層的預覽函數 92
第4章 Android內存系統分析 95
4.1 Android的進程通信機制 96
4.1.1 Android的進程間通信(IPC)機制Binder 96
4.1.2 Service Manager是Binder機制的上下文管理者 97
4.2 分析Ashmem驅動程序 98
4.2.1 基礎數據結構 98
4.2.2 初始化處理 99
4.2.3 打開匿名共享內存設備文件 101
4.2.4 內存映射 104
4.2.5 讀寫操作 105
4.2.6 鎖定和解鎖 107
4.2.7 回收內存塊 113
4.3 分析C++訪問接口層 115
4.3.1 接口MemoryHeapBase 115
4.3.2 接口MemoryBase 125
4.4 分析Java訪問接口層 128
4.5 內存優化機制 132
4.5.1 sp和wp簡析 132
4.5.2 詳解智能指針 134
4.5.3 輕量級指針 136
4.5.4 強指針 139
4.5.5 弱指針 153
第5章 Android虛擬機系統詳解 159
5.1 Android虛擬機基礎 160
5.1.1 Android虛擬機源碼目錄 160
5.1.2 Dalvik的架構 161
5.1.3 Dalvik虛擬機的主要特征 163
5.1.4 Dalvik的進程管理 163
5.1.5 Android的初始化流程 163
5.2 分析Dalvik的運作流程 164
5.2.1 Dalvik虛擬機相關的可執行程序 164
5.2.2 初始化Dalvik虛擬機 167
5.2.3 啟動Zygote 186
5.2.4 啟動SystemServer進程 190
5.2.5 加載class類文件 193
5.3 Dalvik VM的內存系統 197
5.3.1 如何分配內存 197
5.3.2 分析內存管理機制的源碼 199
5.4 分析Dalvik VM的啟動過程 211
5.4.1 創建一個Dalvik VM實例 211
5.4.2 指定控制選項 212
5.4.3 創建并初始化Dalvik VM實例 220
5.4.4 創建JNIEnvExt對象 223
5.4.5 設置當前進程 229
5.4.6 注冊Android核心類的JNI方法 229
5.4.7 使用線程創建javaCreateThreadEtc鉤子 233
5.5 創建Dalvik VM進程 233
5.5.1 分析底層啟動過程 234
5.5.2 創建Dalvik VM進程 234
5.5.3 初始化運行的Dalvik VM 238
第6章 IPC通信機制詳解 241
6.1 Binder機制概述 242
6.2 分析Binder驅動程序 243
6.2.1 分析數據結構 243
6.2.2 分析設備初始化 255
6.2.3 打開Binder設備文件 257
6.2.4 內存映射 258
6.2.5 釋放物理頁面 264
6.2.6 分配內核緩沖區 264
6.2.7 釋放內核緩沖區 267
6.2.8 查詢內核緩沖區 269
6.3 Binder封裝庫 270
6.3.1 Binder庫的實現層次 270
6.3.2 類BBinder 271
6.3.3 類BpRefBase 274
6.3.4 類IPCThreadState 275
6.4 初始化Java層Binder框架 279
第7章 Zygote進程、System進程和應用程序進程 283
7.1 Zygote(孕育)進程詳解 284
7.1.1 Zygote基礎 284
7.1.2 分析Zygote的啟動過程 285
7.2 System進程詳解 303
7.2.1 啟動System進程前的準備工作 303
7.2.2 分析SystemServer 304
7.2.3 分析EntropyService 308
7.2.4 分析DropBoxManagerService 310
7.2.5 分析DiskStatsService 318
7.2.6 分析DeviceStorageManagerService 323
7.2.7 分析SamplingProfilerService 326
7.3 應用程序進程詳解 336
7.3.1 創建應用程序 336
7.3.2 啟動線程池 347
7.3.3 創建信息循環 348
第8章 分析Activity組件 351
8.1 Activity基礎 352
8.1.1 Activity的狀態 352
8.1.2 Activity的主要函數 353
8.2 啟動Activity 355
8.2.1 Launcher啟動應用程序 356
8.2.2 返回ActivityManagerService的遠程接口 358
8.2.3 解析intent的內容 359
8.2.4 分析檢查機制 363
8.2.5 執行Activity組件的操作 378
8.2.6 將Launcher推入Paused狀態 386
8.2.7 處理消息 388
8.2.8 報告暫停 389
8.2.9 建立雙向連接 394
8.2.10 啟動新的Activity 400
8.2.11 發送通知信息 403
第9章 Content Provider數據存儲 405
9.1 Content Provider基礎 406
9.1.1 Content Provider在應用程序中的架構 406
9.1.2 Content Provider的常用接口 407
9.2 啟動Content Provider 408
9.2.1 獲得對象接口 408
9.2.2 存在校驗 410
9.2.3 啟動Android應用程序 416
9.2.4 根據進程啟動Content Provider 416
9.2.5 處理消息 422
9.2.6 具體啟動 423
9.3 Content Provider數據共享 427
9.3.1 獲取接口 427
9.3.2 創建CursorWindow對象 430
9.3.3 數據傳遞 433
9.3.4 處理進程通信的請求 436
9.3.5 數據操作 442
第10章 Broadcast(廣播)系統詳解 447
10.1 Broadcast基礎 448
10.2 發送廣播信息 448
10.2.1 intent描述指示 449
10.2.2 傳遞廣播信息 449
10.2.3 封裝傳遞 450
10.2.4 處理發送請求 451
10.2.5 查找廣播接收者 451
10.2.6 處理廣播信息 455
10.2.7 檢查權限 464
10.2.8 處理的進程通信請求 466
10.3 分析BroadcastReceiver 469
10.3.1 MainActivity的調用 470
10.3.2 注冊廣播接收者 470
10.3.3 獲取接口對象 471
10.3.4 處理進程間的通信請求 474
第11章 多媒體系統詳解 479
11.1 Android多媒體系統介紹 480
11.2 OpenMAX框架詳解 481
11.2.1 分析OpenMAX框架構成 482
11.2.2 實現OpenMAX IL層接口 486
11.3 分析OpenCore框架 495
11.3.1 OpenCore的層次結構 495
11.3.2 OpenCore的代碼結構 496
11.3.3 OpenCore的編譯結構 497
11.3.4 操作系統兼容庫 501
11.3.5 實現OpenCore中的OpenMAX部分 503
11.3.6 OpenCore擴展詳解 517
11.4 Stagefright框架詳解 523
11.4.1 Stagefright代碼結構 523
11.4.2 Stagefright實現OpenMAX接口 524
11.4.3 分析Video Buffer的傳輸流程 528
第12章 電源管理系統詳解 533
12.1 Android Power Management基礎 534
12.2 分析Framework層 535
12.2.1 文件PowerManager.java 535
12.2.2 文件PowerManagerService.java 536
12.3 分析JNI層 560
12.3.1 文件android_os_Power.cpp 560
12.3.2 文件power.c 561
12.4 分析Kernel(內核)層 562
12.4.1 文件power.c 562
12.4.2 文件earlysuspend.c 565
12.4.3 文件wakelock.c 566
12.4.4 文件resume.c 568
12.4.5 文件suspend.c 568
12.4.6 文件main.c 570
12.4.7 proc文件 570
12.5 wakelock和early_suspend 571
12.5.1 wakelock的原理 571
12.5.2 early_suspend的原理 572
12.5.3 Android休眠 572
12.5.4 Android喚醒 575
第13章 輸入系統驅動應用 577
13.1 輸入系統介紹 578
13.2 分析Input(輸入)系統驅動 580
13.2.1 分析頭文件 580
13.2.2 分析核心文件input.c 584
13.2.3 分析event機制 600
13.3 分析硬件抽象層 603
13.3.1 分析文件KeycodeLabels.h 603
13.3.2 分析文件KeyCharacterMap.h 608
13.3.3 分析Kl格式的文件 609
13.3.4 分析kcm格式文件 610
13.3.5 分析文件EventHub.cpp 611
13.4 分析驅動的具體實現 615
13.4.1 分析內置模擬器中的輸入驅動實現 615
13.4.2 MSM高通處理器中的輸入驅動實現 616
13.4.3 OMAP高通處理器中的輸入驅動實現 625
第14章 藍牙系統詳解 627
14.1 Android系統中的藍牙模塊 628
14.2 分析藍牙模塊的源碼 630
14.2.1 初始化藍牙芯片 630
14.2.2 藍牙服務 630
14.2.3 管理藍牙電源 631
14.3 與藍牙相關的類 632
14.3.1 BluetoothSocket類 632
14.3.2 BluetoothServerSocket類 633
14.3.3 BluetoothAdapter類 634
14.3.4 BluetoothClass.Service類 641
14.3.5 BluetoothClass.Device類 641
14.4 低功耗藍牙協議棧詳解 642
14.4.1 低功耗藍牙協議棧基礎 642
14.4.2 低功耗藍牙API詳解 643
14.5 Android中的BlueDroid 644
14.5.1 Android系統中BlueDroid的架構 644
14.5.2 Application Framework層分析 645
14.5.3 分析Bluetooth SystemService層 653
14.5.4 分析JNI層 654
14.5.5 分析HAL層 659
14.6 Android藍牙模塊的運作流程 659
14.6.1 打開藍牙設備 659
14.6.2 搜索藍牙 665
14.6.3 傳輸OPP文件 671
第15章 網絡系統詳解 679
15.1 使用WebKit瀏覽網頁 680
15.1.1 WebKit的Java層框架 681
15.1.2 C/C++層框架 685
15.1.3 分析WebKit的操作過程 688
15.1.4 WebView詳解 692
15.1.5 WebViewCore詳解 693
15.2 Wi-Fi系統應用 700
15.2.1 Wi-Fi概述 700
15.2.2 Wi-Fi系統的層次結構 701
15.2.3 與Linux的差異 703
15.2.4 分析本地部分的源碼 703
15.2.5 分析JNI部分的源碼 706
15.2.6 分析Java Framework部分的源碼 708
15.2.7 分析Setting中的設置部分的源碼 721
序: