注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)計算機(jī)組織與體系結(jié)構(gòu)Android系統(tǒng)源代碼分析

Android系統(tǒng)源代碼分析

Android系統(tǒng)源代碼分析

定 價:¥79.00

作 者: 李俊
出版社: 中國鐵道出版社
叢編項(xiàng):
標(biāo) 簽: 程序設(shè)計 計算機(jī)/網(wǎng)絡(luò) 移動開發(fā)

ISBN: 9787113191641 出版時間: 2015-02-01 包裝:
開本: 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  Android從誕生到現(xiàn)在僅有短短幾年的時間,它憑借其開源開放性、優(yōu)異的用戶體驗(yàn)和極為方便的開發(fā)方式,贏得了廣大用戶和開發(fā)者的青睞,目前已經(jīng)發(fā)展成為市場占有率位居第一的智能手機(jī)操作系統(tǒng)。本書主要講解Android系統(tǒng)源代碼的結(jié)構(gòu)和工作機(jī)制,完全基于Android主流版本的源代碼結(jié)構(gòu)來編寫全書。本書內(nèi)容言簡意賅、通俗易懂、講解詳細(xì)。本書的內(nèi)容涉及如何獲取源碼、源碼的結(jié)構(gòu)分析、init解析、應(yīng)用層結(jié)構(gòu)分析、JNI的機(jī)制分析、Android中的系統(tǒng)服務(wù)和內(nèi)存管理、硬件抽象層、Binder機(jī)制、多媒體框架、音頻系統(tǒng)、視頻系統(tǒng)和傳感器系統(tǒng)。在編寫的過程中,書中的所有概念和模塊實(shí)例完全根據(jù)原生態(tài)的源碼來編寫。本書定位于有一定基礎(chǔ)的Android程序開發(fā)人員,旨在幫助其通過細(xì)致分析Android系統(tǒng)源代碼和工作機(jī)制,透徹理解Android系統(tǒng)架構(gòu),向Android系統(tǒng)開發(fā)殿堂及高手邁進(jìn)。

作者簡介

  李俊,清華大學(xué)電子信息工程專業(yè)學(xué)士。較早進(jìn)入Android開發(fā)領(lǐng)域。有多年的Android開發(fā)經(jīng)驗(yàn),熟練使用Java和C/C++進(jìn)行軟件開發(fā)。熟悉Android層次結(jié)構(gòu)和Linux驅(qū)動層的結(jié)構(gòu)及其上的開發(fā),有著豐富的Android底層和驅(qū)動層的優(yōu)化、移植經(jīng)驗(yàn),擅長利用JNI技術(shù)開發(fā)Android上的應(yīng)用程序。曾帶領(lǐng)團(tuán)隊(duì)利用NDK技術(shù)成功開發(fā)過具有庫侖計電池芯片的電池管理軟件,以及在Android上成功移植人臉識別程序,目前在凹凸電子擔(dān)任Android架構(gòu)師。陳小玉,碩士,南陽理工學(xué)院計算機(jī)與信息工程學(xué)院講師,軟件設(shè)計師。主要從事Arldroid應(yīng)用及游戲開發(fā)和教學(xué)工作,熟練使用Java語言。具有多年的Android和IOS系統(tǒng)手機(jī)客戶端軟件設(shè)計經(jīng)驗(yàn),具備扎實(shí)的手機(jī),桌面/Web UI設(shè)計開發(fā)基礎(chǔ),熟悉Android系統(tǒng)的UI design Guideline,熟悉人機(jī)交互、機(jī)器學(xué)習(xí)和人工智能算法,擅長利用智能算法改進(jìn)Android上的應(yīng)用程序。使其更具有智能性。

圖書目錄

第1章 Android系統(tǒng)介紹
1.1 來到智能手機(jī)世界 1
1.1.1 何謂智能手機(jī) 1
1.1.2 百家爭鳴 2
1.2 Android的優(yōu)勢 3
1.2.1 優(yōu)點(diǎn)一—— 系出名門 3
1.2.2 優(yōu)點(diǎn)二—— 強(qiáng)大的開發(fā)團(tuán)隊(duì) 3
1.2.3 優(yōu)點(diǎn)三—— 誘人的獎勵機(jī)制 4
1.2.4 優(yōu)點(diǎn)四—— 開源 5
1.3 剖析Android系統(tǒng)架構(gòu) 5
1.4 五大組件 7
1.4.1 用Activity來表現(xiàn)界面 7
1.4.2 用Intent和Intent Filters實(shí)現(xiàn)切換 8
1.4.3 Service服務(wù) 8
1.4.4 用Broadcast Intent Receiver發(fā)送廣播 9
1.4.5 用Content Provider存儲數(shù)據(jù) 9
1.5 進(jìn)程和線程 9
1.5.1 先看進(jìn)程 9
1.5.2 再看線程 9
1.6 獲取Android源碼 10
1.6.1 在Linux平臺獲取Android源碼 10
1.6.2 在Windows平臺獲取Android源碼 11
1.7 分析Android源碼結(jié)構(gòu) 13
1.8 編譯源碼 18
1.8.1 Ubuntu系統(tǒng)編譯源碼 19
1.8.2 常見錯誤 19
1.8.3 運(yùn)行Android源碼 20
1.9 編譯Android Kernel 21
1.9.1 獲取Goldfish內(nèi)核代碼 21
1.9.2 獲取MSM內(nèi)核代碼 24
1.9.3 獲取OMAP內(nèi)核代碼 24
1.9.4 編譯Android的Linux內(nèi)核 24
1.10 Android模擬器(AVD) 26
1.10.1 在Linux環(huán)境下運(yùn)行模擬器 26
1.10.2 模擬器輔助工具——adb 27
1.10.3 在Windows中創(chuàng)建Android模擬器 29
1.10.4 在模擬器上運(yùn)行Android系統(tǒng) 30
第2章 源碼結(jié)構(gòu)和SDK解析
2.1 Android源碼的目錄結(jié)構(gòu) 32
2.2 目錄結(jié)構(gòu)在系統(tǒng)中的體現(xiàn) 33
2.2.1 應(yīng)用程序 33
2.2.2 應(yīng)用程序框架 35
2.2.3 系統(tǒng)服務(wù) 35
2.2.4 系統(tǒng)程序庫 38
2.2.5 系統(tǒng)運(yùn)行庫 41
2.2.6 硬件抽象層 41
2.3 編譯源碼生成SDK 42
2.4 源碼中提供的接口 46
2.4.1 暴露的接口和隱藏的接口 46
2.4.2 開發(fā)中如何調(diào)用隱藏接口 52
第3章 分析JNI和Media
3.1 JNI基礎(chǔ) 56
3.2 分析Java層的MediaScanner 57
3.2.1 加載JNI庫 57
3.2.2 實(shí)現(xiàn)掃描工作 59
3.2.3 讀取并保存信息 60
3.2.4 刪除不是SD卡中的文件信息 62
3.2.5 processDirectory 63
3.2.6 掃描函數(shù)scanFile 64
3.2.7 JNI中的異常處理 64
3.3 分析JNI層的MediaScanner 65
3.3.1 將Native對象的指針保存到Java對象 65
3.3.2 創(chuàng)建Native層的MediaScanner對象 66
3.4 Native層的MediaScanner 66
3.4.1 JNI函數(shù)的注冊 66
3.4.2 完成注冊工作 68
3.4.3 動態(tài)注冊 70
3.4.4 processDirectory 72
3.4.5 client.scanFile 73
3.4.6 添加TAG信息 73
3.4.7 總結(jié)函數(shù)JNI_OnLoad()與函數(shù)JNI_OnUnload()的用途 74
3.4.8 Java與JNI基本數(shù)據(jù)類型轉(zhuǎn)換 75
3.4.9 JNIEnv接口 76
3.4.10 JNI中的環(huán)境變量 77
3.5 解析android.process.media 78
3.5.1 MediaScannerReceiver 78
3.5.2 MediaScannerService 81
3.5.3 MediaProvider 86
3.6 MediaScanner中的重要函數(shù) 99
3.6.1 seekTo 99
3.6.2 doProcessDirectory 103
3.6.3 doScanFile 105
3.6.4 android_media_MediaScanner_processFile 106
3.6.5 processFile 107
3.6.6 endFile 108
3.6.7 handleStringTag 108
3.6.8 fileMatchesExtension 109
3.7 Camera模塊JNI實(shí)例分析 110
3.7.1 Java層預(yù)覽接口 110
3.7.2 注冊預(yù)覽的JNI函數(shù) 111
3.7.3 C/C++層的預(yù)覽函數(shù) 115
第4章 分析init進(jìn)程
4.1 init基礎(chǔ) 116
4.2 分析入口函數(shù) 117
4.3 分析配置文件 120
4.3.1 init.rc簡介 121
4.3.2 分析init.rc的過程 123
4.4 解析Service 127
4.4.1 zygote對應(yīng)的service action 127
4.4.2 init組織Service 128
4.4.3 解析Service用到的函數(shù) 129
4.5 解析on 134
4.5.1 zygote對應(yīng)的on action 134
4.5.2 init組織on 135
4.5.3 解析on用到的函數(shù) 136
4.6 init控制Service 136
4.6.1 啟動zygote 137
4.6.2 啟動Service 137
4.6.3 總結(jié)四種啟動Service的方式 142
4.7 控制屬性服務(wù) 147
4.7.1 引入屬性 147
4.7.2 初始化屬性服務(wù) 150
4.7.3 啟動屬性服務(wù) 151
4.7.4 處理設(shè)置屬性的請求 155
第5章 深入分析HAL層
5.1 初識HAL層 157
5.1.1 HAL層簡介 158
5.1.2 HAL_legacy和HAL的對比 159
5.2 分析HAL層源碼 159
5.2.1 分析HAL module 159
5.2.2 文件hardware.h 160
5.2.3 文件hardware.c 162
5.3 分析硬件抽象層的加載過程 165
5.4 分析硬件訪問服務(wù) 169
5.4.1 定義硬件訪問服務(wù)接口 169
5.4.2 實(shí)現(xiàn)硬件訪問服務(wù) 170
5.5 分析mokoid工程 171
5.5.1 直接調(diào)用service方法的實(shí)現(xiàn)代碼 172
5.5.2 通過Manager調(diào)用service的實(shí)現(xiàn)代碼 177
5.6 舉例說明Sensor(傳感器)在HAL層的表現(xiàn) 180
5.6.1 HAL層的Sensor代碼 180
5.6.2 Sensor編程的流程 182
5.7 HAL和系統(tǒng)移植 183
5.7.1 移植各個Android部件的方式 183
5.7.2 輔助工作 183
第6章 分析Android的內(nèi)存機(jī)制
6.1 內(nèi)存和進(jìn)程的關(guān)系 190
6.1.1 進(jìn)程管理工具的紛爭 190
6.1.2 Android系統(tǒng)內(nèi)存設(shè)計 191
6.2 分析Android的進(jìn)程通信機(jī)制 192
6.2.1 Android的進(jìn)程間通信(IPC)機(jī)制Binder 192
6.2.2 Service Manager是Binder機(jī)制的上下文管理者 193
6.2.3 分析Server和Client獲得Service Manager的過程 211
6.3 分析Android系統(tǒng)匿名共享內(nèi)存C++調(diào)用接口 215
6.3.1 Java程序 217
6.3.2 相關(guān)程序 226
6.4 內(nèi)存優(yōu)化 229
6.4.1 sp和wp簡析 229
6.4.2 詳解智能指針(android refbase類(sp和wp)) 231
第7章 分析ActivityManagerService
7.1 AMS基礎(chǔ) 233
7.1.1 進(jìn)程數(shù)據(jù)類ProcessRecord 234
7.1.2 數(shù)據(jù)類HistoryRecord 234
7.1.3 類TaskRecord 235
7.1.4 AMS中的一些重要調(diào)度相關(guān)變量 235
7.2 Activity的調(diào)度 237
7.2.1 startActivity()的啟動流程 237
7.2.2 stopActivityLocked()停止Activity 278
第8章 分析Binder和MessageQueue
8.1 分析Binder 285
8.1.1 Client、Server和ServiceManager 285
8.1.2 MediaServer 286
8.1.3 ServiceManager 312
8.1.4 分析MediaPlayerService和Client 316
8.2 初始化Java層Binder框架 323
8.2.1 Binder類的初始化 324
8.2.2 addService實(shí)例分析 325
8.3 分析MessageQueue 334
8.3.1 創(chuàng)建MessageQueue 335
8.3.2 提取消息 335
8.3.3 分析函數(shù)nativePollOnce 340
第9章 分析SystemServer
9.1 分析SystemServer 350
9.1.1 分析主函數(shù)main 350
9.1.2 分析函數(shù)init2 353
9.2 分析EntropyService 353
9.3 分析DropBoxManagerService 356
9.3.1 分析DBMS構(gòu)造函數(shù) 356
9.3.2 添加dropbox日志文件 358
9.3.3 DBMS和Settings數(shù)據(jù)庫 362
9.4 分析DiskStatsService 363
9.5 分析DeviceStorageManagerService 368
9.6 分析SamplingProfilerService 371
9.6.1 分析SamplingProfilerService構(gòu)造函數(shù) 371
9.6.2 分析SamplingProfilerIntegration 372
9.7 分析ClipboardService 382
9.7.1 復(fù)制數(shù)據(jù)到剪貼板 383
9.7.2 從剪貼板粘貼數(shù)據(jù) 384
9.7.3 CBS中的權(quán)限管理 387
第10章 分析WindowManagerService
10.1 WindowManagerService概述 391
10.2 分析計算Activity窗口大小的過程 393
10.2.1 概覽 393
10.2.2 分析Activity計算窗口大小的過程 394
10.3 分析WindowManagerService對窗口的組織方式 419
10.3.1 概述 419
10.3.2 分析操作源碼 420
第11章 分析安裝應(yīng)用程序的過程
11.1 WindowManagerService概述 439
11.2 分析安裝過程 441
11.2.1 主函數(shù)main 441
11.2.2 初始化函數(shù) 442
11.2.3 初始化服務(wù) 442
11.2.4 調(diào)用靜態(tài)成員函數(shù) 446
11.2.5 創(chuàng)建了ServerThread線程 447
11.2.6 啟動服務(wù) 447
11.2.7 創(chuàng)建PackageManagerService服務(wù)實(shí)例 452
11.2.8 掃描函數(shù)scanDirLI 460
11.2.9 歸檔處理 464
11.2.10 解析application標(biāo)簽 475
11.2.11 保存解析后的程序信息 477
第12章 分析核心框架系統(tǒng)
12.1 分析音頻系統(tǒng) 479
12.1.1 Audio系統(tǒng)的層次介紹 479
12.1.2 Media庫中的Audio框架 481
12.1.3 本地代碼 488
12.1.4 JNI代碼 491
12.1.5 Java代碼 492
12.2 視頻輸出系統(tǒng) 492
12.2.1 Overlay系統(tǒng)的基本層次結(jié)構(gòu) 492
12.2.2 Overlay系統(tǒng)硬件抽象層的接口 494
12.2.3 實(shí)現(xiàn)硬件抽象層 496
12.2.4 實(shí)現(xiàn)接口 497
12.3 分析OpenMax多媒體框架 498
12.3.1 分析OpenMax IL層的接口 499
12.3.2 OpenMax適配層 504
12.4 分析多媒體插件框架 506
12.4.1 基本層次結(jié)構(gòu) 507
12.4.2 分析庫libopencorecommon.so的結(jié)構(gòu) 508
12.4.3 分析庫libopencoreplayer.so的結(jié)構(gòu) 509
12.4.4 分析庫libopencoreauthor.so的結(jié)構(gòu) 510
12.4.5 其他的庫 511
12.4.6 OpenCore OSCL 511
12.4.7 實(shí)現(xiàn)OpenCore中的OpenMax部分 513
12.5 分析Camera照相機(jī)系統(tǒng) 525
12.5.1 基本層次結(jié)構(gòu) 525
12.5.2 分析V4L2驅(qū)動程序 527
12.5.3 硬件抽象層 534
12.5.4 實(shí)現(xiàn)Camera系統(tǒng)的硬件抽象層 535
12.6 分析傳感器系統(tǒng) 542
12.6.1 基本層次結(jié)構(gòu) 542
12.6.2 分析硬件抽象層 544
12.6.3 實(shí)現(xiàn)上層部分 545

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號