-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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 5 源代碼

( 簡體 字)
作者:李駿類別:1. -> 程式設計 -> 手機程式 -> Android
譯者:
出版社:人民郵電出版社深入理解Android 5 源代碼 3dWoo書號: 43064
詢問書籍請說出此書號!

缺書
NT售價: 495

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

譯者序:

前言:

內容簡介:

  本書共分20章,循序漸進地分析了Android系統的基本源代碼,依次講解了Android系統介紹,獲取并編譯Android源代碼,分析Java Native Interface系統,分析HAL系統,分析IPC通信機制,分析Binder對象和Java接口,分析ServiceManager和MessageQueue,init進程和Zygote進程,System進程和應用程序進程,分析Activity組件,應用程序管理服務分析,Content Provider、Broadcast(廣播)系統,電源管理系統分析,分析WindowManagerService系統、分析電話系統,分析短信系統、Sensor傳感器系統詳解、分析SEAndroid系統和分析ART系統等核心知識。本書內容言簡意賅,講解方法通俗易懂,不僅適合有一定基礎的讀者學習,也特別有利于初學者學習。
本書適合Android初學者、Android愛好者、Android底層開發人員、Android應用開發人員學習,也可以作為相關培訓學校和大專院校相關專業師生的教學用書。
目錄:

第1章 Android系統介紹 1
1.1 Android系統成功的秘訣 1
1.1.1 獲取了業界的廣泛支持 1
1.1.2 研發陣容強大 1
1.1.3 為開發人員“精心定制” 1
1.1.4 開源 2
1.2 剖析Android系統架構 2
1.2.1 底層操作系統層(OS) 3
1.2.2 各種庫(Libraries)和Android
運行環境(RunTime) 3
1.2.3 Application Framework(應用
程序框架) 3
1.2.4 頂層應用程序(Application) 4
1.3 五大組件 4
1.3.1 Activity界面 4
1.3.2 Intent和Intent Filters切換 4
1.3.3 Service(服務) 5
1.3.4 Broadcast Receiver發送廣播 5
1.3.5 用Content Provider存儲數據 6
1.4 進程和線程 6
1.4.1 什么是進程 6
1.4.2 什么是線程 6
第2章 獲取并編譯Android源代碼 7
2.1 獲取Android源代碼 7
2.1.1 在Linux系統中獲取Android
源代碼 7
2.1.2 在Windows平臺獲取Android
源代碼 8
2.2 分析Android源代碼結構 10
2.2.1 總體結構 11
2.2.2 應用程序部分 12
2.2.3 應用程序框架部分 13
2.2.4 系統服務部分 13
2.2.5 系統程序庫部分 15
2.2.6 硬件抽象層部分 17
2.3 Android源代碼提供的接口 18
2.3.1 暴露接口和隱藏接口 18
2.3.2 調用隱藏接口 23
2.4 編譯源代碼 25
2.4.1 搭建編譯環境 25
2.4.2 在模擬器中運行 27
2.5 編譯源代碼生成SDK 27
第3章 分析Java Native Interface
系統 30
3.1 JNI基礎 30
3.1.1 JNI的功能結構 30
3.1.2 JNI的調用層次 30
3.1.3 分析JNI的本質 31
3.2 分析MediaScanner 32
3.2.1 分析Java層 32
3.2.2 分析JNI層 37
3.2.3 分析Native(本地)層 38
3.3 分析Camera系統的JNI 44
3.3.1 Java層預覽接口 45
3.3.2 注冊預覽的JNI函數 46
3.3.3 C/C++層的預覽函數 48
第4章 分析HAL系統 49
4.1 HAL基礎 49
4.1.1 推出HAL的背景 49
4.1.2 HAL的基本結構 50
4.2 分析HAL module架構 51
4.2.1 hw_module_t 52
4.2.2 結構hw_module_methods_t
的定義 52
4.2.3 hw_device_t結構 53
4.3 分析文件hardware.c 53
4.3.1 尋找動態鏈接庫的地址 53
4.3.2 數組variant_keys 54
4.3.3 載入相應的庫 54
4.3.4 獲得hw_module_t結構體 54
4.4 分析硬件抽象層的加載過程 55
4.5 分析硬件訪問服務 58
4.5.1 定義硬件訪問服務接口 58
4.5.2 具體實現 59
4.6 分析Android官方實例 60
4.6.1 獲取實例工程源代碼 60
4.6.2 直接調用Service方法的
實現代碼 61
4.6.3 通過Manager調用Service
的實現代碼 64
4.7 HAL和系統移植 66
4.7.1 移植各個Android部件
的方式 66
4.7.2 設置設備權限 67
4.7.3 init.rc初始化 70
4.7.4 文件系統的屬性 70
第5章 分析IPC通信機制 72
5.1 Binder機制概述 72
5.2 分析Binder驅動程序 73
5.2.1 分析數據結構 73
5.2.2 分析設備初始化 82
5.2.3 打開Binder設備文件 83
5.2.4 內存映射 85
5.2.5 釋放物理頁面 89
5.2.6 分配內核緩沖區 89
5.2.7 釋放內核緩沖區 91
5.2.8 查詢內核緩沖區 93
5.3 Binder封裝庫 93
5.3.1 類BBinder 94
5.3.2 類BpRefBase 96
5.3.3 類IPCThreadState 97
5.4 初始化Java層Binder框架 99
5.5 分析MediaServer的通信機制 101
5.5.1 MediaServer的入口函數 101
5.5.2 ProcessState 102
5.5.3 defaultServiceManager 103
5.5.4 注冊MediaPlayerService 108
5.5.5 分析StartThread Pool和
join Thread Pool 117
第6章 分析Binder對象和Java接口 119
6.1 分析實體對象(binder_node) 119
6.2 分析本地對象(BBinder) 121
6.3 分析引用對象(binder_ref) 129
6.4 分析代理對象(BpBinder) 131
6.5 分析Java接口 134
6.5.1 獲取Service Manager 134
6.5.2 分析ActivityManagerService
的Java層 138
第7章 分析ServiceManager和
MessageQueue 151
7.1 分析ServiceManager 151
7.1.1 分析主入口函數 151
7.1.2 打開Binder設備文件 152
7.1.3 注冊處理 154
7.1.4 創建Binder實體對象 156
7.1.5 盡職的循環 157
7.1.6 將信息注冊到
ServiceManager 162
7.1.7 分析MediaPlayerService
和Client 164
7.2 獲得Service Manager接口 169
7.3 分析MessageQueue 171
7.3.1 創建MessageQueue 171
7.3.2 提取消息 171
7.3.3 分析函數nativePollOnce 174
第8章 init進程和Zygote進程 182
8.1 分析init進程 182
8.1.1 分析入口函數 182
8.1.2 分析配置文件 185
8.1.3 分析Service 190
8.1.4 解析on字段的內容 195
8.1.5 init控制Service 197
8.1.6 控制屬性服務 204
8.2 分析Zygote(孕育)進程 210
8.2.1 Zygote基礎 211
8.2.2 分析Zygote的啟動過程 211
第9章 System進程和應用程序進程 224
9.1 分析System進程 224
9.1.1 啟動System進程前
的準備工作 224
9.1.2 分析SystemServer 225
9.1.3 分析EntropyService 227
9.1.4 分析DropBoxManager
Service 229
9.1.5 分析DiskStatsService 234
9.1.6 分析DeviceStorageManager
Service(監測系統內存存儲
空間的狀態) 237
9.1.7 分析SamplingProfiler
Service 239
9.2 分析應用程序進程 246
9.2.1 創建應用程序 246
9.2.2 啟動線程池 254
9.2.3 創建信息循環 255
第10章 分析Activity組件 258
10.1 Activity基礎 258
10.1.1 Activity狀態 258
10.1.2 剖析Activity中的
主要函數 259
10.2 分析Activity的啟動源代碼 260
10.2.1 Launcher啟動應用程序 261
10.2.2 返回ActivityManagerService
的遠程接口 262
10.2.3 解析intent的內容 263
10.2.4 分析檢查機制 265
10.2.5 執行Activity組件的操作 274
10.2.6 將Launcher推入Paused
狀態 279
10.2.7 處理消息 281
10.2.8 暫停完畢 282
10.2.9 建立雙向連接 285
10.2.10 啟動新的Activity 289
10.2.11 通知機制 291
10.2.12 發送消息 292
第11章 應用程序管理服務——PackageManagerService分析 295
11.1 PackageManagerService概述 295
11.2 系統進程啟動 296
11.3 開始運行 296
11.4 掃描APK文件 306
11.5 解析并安裝文件 307
11.6 啟動系統默認Home應用程序
Launcher 323
11.6.1 設置系統進程 323
11.6.2 啟動Home應用程序 324
11.6.3 啟動com.android.launcher2. Launcher 330
11.6.4 加載應用程序 333
11.6.5 獲得Activity 336
第12章 Content Provider存儲機制 341
12.1 Content Provider基礎 341
12.1.1 Content Provider在應用
程序中的架構 341
12.1.2 Content Provider的常用
接口 342
12.2 啟動Content Provider 343
12.2.1 獲得對象接口 343
12.2.2 存在校驗 344
12.2.3 啟動Android應用程序 348
12.2.4 根據進程啟動Content
Provider 348
12.2.5 處理消息 352
12.2.6 具體啟動 354
12.3 Content Provider數據共享 356
12.3.1 獲取接口 356
12.3.2 創建CursorWindow對象 358
12.3.3 數據傳遞 361
12.3.4 處理進程通信的請求 362
12.3.5 數據操作 367
第13章 分析廣播機制源代碼 370
13.1 Broadcast基礎 370
13.2 發送廣播信息 371
13.2.1 intent描述指示 371
13.2.2 傳遞廣播信息 371
13.2.3 封裝傳遞 372
13.2.4 處理發送請求 372
13.2.5 查找廣播接收者 373
13.2.6 處理廣播信息 375
13.2.7 檢查權限 382
13.2.8 處理的進程通信請求 384
13.3 分析BroadCastReceiver 386
13.3.1 MainActivity的調用 386
13.3.2 注冊廣播接收者 387
13.3.3 獲取接口對象 388
13.3.4 處理進程間的通信請求 390
第14章 分析電源管理系統 392
14.1 Power Management架構基礎 392
14.2 分析Framework層 392
14.2.1 文件PowerManager.java 393
14.2.2 提供PowerManager功能 393
14.3 JNI層架構分析 410
14.3.1 定義了兩層之間的
接口函數 410
14.3.2 與Linux Kernel層
進行交互 411
14.4 Kernel(內核)層架構分析 411
14.4.1 文件power.c 412
14.4.2 文件earlysuspend.c 414
14.4.3 文件wakelock.c 414
14.4.4 文件resume.c 416
14.4.5 文件suspend.c 416
14.4.6 文件main.c 417
14.4.7 proc文件 417
14.5 wakelock和early_suspend 418
14.5.1 wakelock的原理 418
14.5.2 early_suspend的原理 419
14.5.3 Android休眠 419
14.5.4 Android喚醒 421
14.6 Battery電池系統架構和管理 421
14.6.1 實現驅動程序 422
14.6.2 實現JNI本地代碼 422
14.6.3 Java層代碼 423
14.6.4 實現Uevent部分 424
14.7 JobScheduler節能調度機制 428
14.7.1 JobScheduler機制的
推出背景 428
14.7.2 JobScheduler的實現 428
14.7.3 實現操作調度 429
14.7.4 封裝調度任務 431
第15章 分析WindowManagerService
系統 434
15.1 WindowManagerService基礎 434
15.2 計算Activity窗口的大小 435
15.2.1 實現View遍歷 436
15.2.2 函數relayoutWindow 446
15.2.3 函數relayoutWindow 447
15.2.4 攔截消息的處理類 466
15.2.5 判斷是否計算過 477
第16章 分析電話系統 482
16.1 Android電話系統詳解 482
16.1.1 電話系統簡介 482
16.1.2 電話系統結構 483
16.1.3 驅動程序介紹 485
16.1.4 RIL接口 486
16.1.5 分析電話系統的實現流程 488
16.2 電話系統中的音頻模塊 493
16.2.1 音頻系統結構 493
16.2.2 分析音頻系統的層次 494
16.3 分析撥號流程 501
16.3.1 撥號界面 501
16.3.2 實現Phone應用 504
16.3.3 Call通話控制 507
16.3.4 靜態方法調用 510
16.3.5 通話管理 512
16.3.6 dial撥號 514
16.3.7 狀態跟蹤 515
16.3.8 RIL消息“出/入”口 516
16.3.9 顯示通話主界面 517
第17章 分析短信系統 518
17.1 短信系統的主界面 518
17.2 發送普通短信 520
17.3 發送彩信 530
17.4 接收短信 537
17.4.1 Java應用層的接收流程 538
17.4.2 Framework層的處理過程 540
第18章 Sensor傳感器系統詳解 542
18.1 Android傳感器系統概述 542
18.2 Java層詳解 543
18.3 Frameworks層詳解 548
18.3.1 監聽傳感器的變化 548
18.3.2 注冊監聽 548
18.4 JNI層詳解 556
18.4.1 實現Native(本地)函數 557
18.4.2 處理客戶端數據 561
18.4.3 處理服務端數據 563
18.4.4 封裝HAL層的代碼 572
18.4.5 處理消息隊列 576
18.5 HAL層詳解 578
第19章 分析SEAndroid系統 585
19.1 SEAndroid概述 585
19.1.1 內核空間 587
19.1.2 用戶空間 588
19.2 文件安全上下文 596
19.2.1 設置打包在ROM里面
的文件的安全上下文 597
19.2.2 設置虛擬文件系統的
安全上下文 600
19.2.3 設置應用程序數據文件的
安全上下文 601
19.3 進程安全上下文 612
19.3.1 為獨立進程靜態地設置
安全上下文 612
19.3.2 為應用程序進程設置
安全上下文 615
第20章 分析ART系統 621
20.1 對比Dalvik VM和ART 621
20.2 啟動ART 623
20.2.1 運行app_process進程 624
20.2.2 準備啟動 627
20.2.3 創建運行實例 632
20.2.4 注冊本地JNI函數 633
20.2.5 啟動守護進程 634
20.2.6 解析參數 635
20.2.7 初始化類、方法和域 641
20.3 分析主函數main 647
20.4 查找目標類 648
20.4.1 函數LookupClass() 648
20.4.2 函數DefineClass() 650
20.4.3 函數InsertClass() 653
20.4.4 函數LinkClass() 653
20.5 類操作 655
20.6 實現托管操作 656
20.7 加載OAT文件 660
20.7.1 產生OAT 660
20.7.2 創建ART虛擬機 661
20.7.3 解析啟動參數并創建堆 663
20.7.4 生成指定目錄文件 665
20.7.5 加載OAT文件 666
20.7.6 解析字段 668
序: