深入理解Android 5源代碼

深入理解Android 5源代碼
定價:594
NT $ 517
  • 作者:李駿
  • 出版社:人民郵電出版社
  • 出版日期:2016-01-01
  • 語言:簡體中文
  • ISBN10:7115405956
  • ISBN13:9787115405951
  • 裝訂:674頁 / 普通級 / 1-1
 

內容簡介

本書共分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應用開發人員學習,也可以作為相關培訓學校和大專院校相關專業師生的教學用書。

李駿,清華大學電子信息工程專業學士。較早進入Android開發領域。有多年的Android開發經驗,熟練使用Java和C/C++進行軟件開發。熟悉Android層次結構和Linux驅動層的結構及其上的開發,有着豐富的Android底層和驅動層的優化、移植經驗,擅長利用JNI技術開發 Android上的應用程序。曾帶領團隊利用NDK技術成功開發過具有庫侖計電池芯片的電池管理軟件,以及在Android上成功移植人臉識別程序,目前在凹凸電子擔任Android架構師。
 

目錄

第1章Android系統介紹1
1.1Android系統成功的秘訣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.3ApplicationFramework(應用程序框架)3
1.2.4頂層應用程序(Application)4
1.3五大組件4
1.3.1Activity界面4
1.3.2Intent和IntentFilters切換4
1.3.3Service(服務)5
1.3.4BroadcastReceiver發送廣播5
1.3.5用ContentProvider存儲數據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.3Android源代碼提供的接口18
2.3.1暴露接口和隱藏接口18
2.3.2調用隱藏接口23
2.4編譯源代碼25
2.4.1搭建編譯環境25
2.4.2在模擬器中運行27
2.5編譯源代碼生成SDK27

第3章分析JavaNativeInterface系統30
3.1JNI基礎30
3.1.1JNI的功能結構30
3.1.2JNI的調用層次30
3.1.3分析JNI的本質31
3.2分析MediaScanner32
3.2.1分析Java層32
3.2.2分析JNI層37
3.2.3分析Native(本地)層38
3.3分析Camera系統的JNI44
3.3.1Java層預覽接口45
3.3.2注冊預覽的JNI函數46
3.3.3C/C++層的預覽函數48

第4章分析HAL系統49
4.1HAL基礎49
4.1.1推出HAL的背景49
4.1.2HAL的基本結構50
4.2分析HALmodule架構51
4.2.1hw_module_t52
4.2.2結構hw_module_methods_t的定義52
4.2.3hw_device_t結構53
4.3分析文件hardware.c53
4.3.1尋找動態鏈接庫的地址53
4.3.2數組variant_keys54
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.7HAL和系統移植66
4.7.1移植各個Android部件的方式66
4.7.2設置設備權限67
4.7.3init.rc初始化70
4.7.4文件系統的屬性70

第5章分析IPC通信機制72
5.1Binder機制概述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.3Binder封裝庫93
5.3.1類BBinder94
5.3.2類BpRefBase96
5.3.3類IPCThreadState97
5.4初始化Java層Binder框架99
5.5分析MediaServer的通信機制101
5.5.1MediaServer的入口函數101
5.5.2ProcessState102
5.5.3defaultServiceManager103
5.5.4注冊MediaPlayerService108
5.5.5分析StartThreadPool和joinThreadPool117

第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獲取ServiceManager134
6.5.2分析ActivityManagerService的Java層138

第7章分析ServiceManager和MessageQueue151
7.1分析ServiceManager151
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將信息注冊到ServiceManager162
7.1.7分析MediaPlayerService
和Client164
7.2獲得ServiceManager接口169
7.3分析MessageQueue171
7.3.1創建MessageQueue171
7.3.2提取消息171
7.3.3分析函數nativePollOnce174

第8章init進程和Zygote進程182
8.1分析init進程182
8.1.1分析入口函數182
8.1.2分析配置文件185
8.1.3分析Service190
8.1.4解析on字段的內容195
8.1.5init控制Service197
8.1.6控制屬性服務204
8.2分析Zygote(孕育)進程210
8.2.1Zygote基礎211
8.2.2分析Zygote的啟動過程211

第9章System進程和應用程序進程224
9.1分析System進程224
9.1.1啟動System進程前的准備工作224
9.1.2分析SystemServer225
9.1.3分析EntropyService227
9.1.4分析DropBoxManagerService229
9.1.5分析DiskStatsService234
9.1.6分析DeviceStorageManagerService(監測系統內存存儲空間的狀態)237
9.1.7分析SamplingProfilerService239
9.2分析應用程序進程246
9.2.1創建應用程序246
9.2.2啟動線程池254
9.2.3創建信息循環255

第10章分析Activity組件258
10.1Activity基礎258
10.1.1Activity狀態258
10.1.2剖析Activity中的主要函數259
10.2分析Activity的啟動源代碼260
10.2.1Launcher啟動應用程序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啟動新的Activity289
10.2.11通知機制291
10.2.12發送消息292

第11章應用程序管理服務——PackageManagerService分析295
11.1PackageManagerService概述295
11.2系統進程啟動296
11.3開始運行296
11.4掃描APK文件306
11.5解析並安裝文件307
11.6啟動系統默認Home應用程序Launcher323
11.6.1設置系統進程323
11.6.2啟動Home應用程序324
11.6.3啟動com.android.launcher2.Launcher330
11.6.4加載應用程序333
11.6.5獲得Activity336

第12章ContentProvider存儲機制341
12.1ContentProvider基礎341
12.1.1ContentProvider在應用程序中的架構341
12.1.2ContentProvider的常用接口342
12.2啟動ContentProvider343
12.2.1獲得對象接口343
12.2.2存在校驗344
12.2.3啟動Android應用程序348
12.2.4根據進程啟動Content Provider348
12.2.5處理消息352
12.2.6具體啟動354
12.3ContentProvider數據共享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.1Broadcast基礎370
13.2發送廣播信息371
13.2.1intent描述指示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分析BroadCastReceiver386
13.3.1MainActivity的調用386
13.3.2注冊廣播接收者387
13.3.3獲取接口對象388
13.3.4處理進程間的通信請求390

第14章分析電源管理系統392
14.1PowerManagement架構基礎392
14.2分析Framework層392
14.2.1文件PowerManager.java393
14.2.2提供PowerManager功能393
14.3JNI層架構分析410
14.3.1定義了兩層之間的接口函數410
14.3.2與LinuxKernel層進行交互411
14.4Kernel(內核)層架構分析411
14.4.1文件power.c412
14.4.2文件earlysuspend.c414
14.4.3文件wakelock.c414
14.4.4文件resume.c416
14.4.5文件suspend.c416
14.4.6文件main.c417
14.4.7proc文件417
14.5wakelock和early_suspend418
14.5.1wakelock的原理418
14.5.2early_suspend的原理419
14.5.3Android休眠419
14.5.4Android喚醒421
14.6Battery電池系統架構和管理421
14.6.1實現驅動程序422
14.6.2實現JNI本地代碼422
14.6.3Java層代碼423
14.6.4實現Uevent部分424
14.7JobScheduler節能調度機制428
14.7.1JobScheduler機制的推出背景428
14.7.2JobScheduler的實現428
14.7.3實現操作調度429
14.7.4封裝調度任務431

第15章分析WindowManagerService系統434
15.1WindowManagerService基礎434
15.2計算Activity窗口的大小435
15.2.1實現View遍歷436
15.2.2函數relayoutWindow446
15.2.3函數relayoutWindow447
15.2.4攔截消息的處理類466
15.2.5判斷是否計算過477

第16章分析電話系統482
16.1Android電話系統詳解482
16.1.1電話系統簡介482
16.1.2電話系統結構483
16.1.3驅動程序介紹485
16.1.4RIL接口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.3Call通話控制507
16.3.4靜態方法調用510
16.3.5通話管理512
16.3.6dial撥號514
16.3.7狀態跟蹤515
16.3.8RIL消息「出/入」口516
16.3.9顯示通話主界面517

第17章分析短信系統518
17.1短信系統的主界面518
17.2發送普通短信520
17.3發送彩信530
17.4接收短信537
17.4.1Java應用層的接收流程538
17.4.2Framework層的處理過程540

第18章Sensor傳感器系統詳解542
18.1Android傳感器系統概述542
18.2Java層詳解543
18.3Frameworks層詳解548
18.3.1監聽傳感器的變化548
18.3.2注冊監聽548
18.4JNI層詳解556
18.4.1實現Native(本地)函數557
18.4.2處理客戶端數據561
18.4.3處理服務端數據563
18.4.4封裝HAL層的代碼572
18.4.5處理消息隊列576
18.5HAL層詳解578

第19章分析SEAndroid系統585
19.1SEAndroid概述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對比DalvikVM和ART621
20.2啟動ART623
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分析主函數main647
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產生OAT660
20.7.2創建ART虛擬機661
20.7.3解析啟動參數並創建堆663
20.7.4生成指定目錄文件665
20.7.5加載OAT文件666
20.7.6解析字段668
網路書店 類別 折扣 價格
  1. 新書
    87
    $517