注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)程序設(shè)計(jì)綜合深入理解Android內(nèi)核設(shè)計(jì)思想

深入理解Android內(nèi)核設(shè)計(jì)思想

深入理解Android內(nèi)核設(shè)計(jì)思想

定 價(jià):¥108.00

作 者: 林學(xué)森 著
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 程序設(shè)計(jì) 計(jì)算機(jī)/網(wǎng)絡(luò) 移動(dòng)開(kāi)發(fā)

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787115348418 出版時(shí)間: 2014-05-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 687 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《深入理解Android內(nèi)核設(shè)計(jì)思想》適用于Android 4.3以上的版本。全書(shū)從操作系統(tǒng)的基礎(chǔ)知識(shí)入手,全面剖析進(jìn)程/線程、內(nèi)存管理、Binder機(jī)制、GUI顯示系統(tǒng)、多媒體管理、輸入系統(tǒng)等核心技術(shù)在Android中的實(shí)現(xiàn)原理。書(shū)中講述的知識(shí)點(diǎn)大部分來(lái)源于工程項(xiàng)目研發(fā),因而具有較強(qiáng)的實(shí)用性,希望可以讓讀者“知其然,更知其所以然”。全書(shū)分為編譯篇、系統(tǒng)原理篇、應(yīng)用原理篇、系統(tǒng)工具篇共4篇22章,基本涵蓋了參與Android開(kāi)發(fā)所需具備的知識(shí),并通過(guò)大量圖片與實(shí)例來(lái)引導(dǎo)讀者學(xué)習(xí),以求盡量在源代碼分析外為讀者提供更易于理解的思維方式?!渡钊肜斫釧ndroid內(nèi)核設(shè)計(jì)思想》既適合Android系統(tǒng)工程師,也適合于應(yīng)用開(kāi)發(fā)工程師來(lái)閱讀提升Android開(kāi)發(fā)能力。讀者可以在《深入理解Android內(nèi)核設(shè)計(jì)思想》潛移默化的學(xué)習(xí)過(guò)程中更深刻地理解Android系統(tǒng),并將所學(xué)知識(shí)自然地應(yīng)用到實(shí)際開(kāi)發(fā)難題的解決中。

作者簡(jiǎn)介

  林學(xué)森,香港中文大學(xué)計(jì)算機(jī)碩士,曾于多家跨國(guó)企業(yè)擔(dān)任研發(fā)工作,并已在國(guó)內(nèi)外會(huì)議、雜志上發(fā)表多篇一作文章?,F(xiàn)為某行業(yè)領(lǐng)先企業(yè)Android軟件部創(chuàng)始人、負(fù)責(zé)人。有豐富的技術(shù)研發(fā)與項(xiàng)目管理經(jīng)驗(yàn),擅長(zhǎng)系統(tǒng)架構(gòu)規(guī)劃與核心問(wèn)題分析。

圖書(shū)目錄

第1篇 Android編譯篇
第1章 Android系統(tǒng)簡(jiǎn)介 2
1.1 Android系統(tǒng)發(fā)展歷程 2
1.2 Android系統(tǒng)特點(diǎn) 4
1.3 Android系統(tǒng)框架 8
第2章 Android源碼下載及編譯 10
2.1 Android源碼下載指南 10
2.1.1 基于Repo和Git的版本管理 10
2.1.2 Android源碼下載流程 11
2.2 原生態(tài)系統(tǒng)編譯指南 12
2.2.1 建立編譯環(huán)境 13
2.2.2 編譯流程 15
2.3 定制產(chǎn)品的編譯與燒錄 17
2.3.1 定制新產(chǎn)品 17
2.3.2 Linux內(nèi)核編譯 21
2.3.3 燒錄 22
2.4 Android系統(tǒng)映像文件 23
2.4.1 boot.img 23
2.4.2 ramdisk.img 25
2.4.3 system.img 26
2.5 OTA系統(tǒng)升級(jí) 26
2.5.1 生成升級(jí)包 27
2.5.2 獲取升級(jí)包 28
2.5.3 OTA升級(jí)-RecoveryMode 29
2.6 Android反編譯 31
第3章 Android編譯系統(tǒng) 34
3.1 Makefile入門(mén) 34
3.2 Android編譯系統(tǒng) 35
3.2.1 Makefile依賴(lài)樹(shù)的概念 36
3.2.2 樹(shù)根節(jié)點(diǎn)droid 36
3.2.3 main.mk解析 38
3.2.4 droidcore節(jié)點(diǎn) 39
3.2.5 dist_files 41
3.2.6 Android.mk的編寫(xiě)規(guī)則 42
第2篇 Android原理篇
第4章 操作系統(tǒng)基礎(chǔ) 48
4.1 計(jì)算機(jī)體系結(jié)構(gòu)(Computer Architecture) 48
4.1.1 馮·諾依曼結(jié)構(gòu) 48
4.1.2 哈佛結(jié)構(gòu) 48
4.2 什么是操作系統(tǒng) 49
4.3 進(jìn)程間通信的經(jīng)典實(shí)現(xiàn) 51
4.3.1 共享內(nèi)存(Shared Memory) 52
4.3.2 管道(Pipe) 54
4.3.3 Unix Domain Socket 55
4.3.4 RPC(RemoteProcedure Calls) 58
4.4 同步機(jī)制的經(jīng)典實(shí)現(xiàn) 58
4.4.1 信號(hào)量(Semaphore) 58
4.4.2 Mutex 59
4.4.3 管程(Monitor) 59
4.4.4 同步范例 60
4.5 Android中的同步機(jī)制 61
4.5.1 進(jìn)程間同步——Mutex 61
4.5.2 條件判斷——Condition 62
4.5.3 “柵欄、障礙”——Barrier 64
4.5.4 加解鎖的自動(dòng)化操作——Autolock 66
4.6 操作系統(tǒng)內(nèi)存管理基礎(chǔ) 66
4.6.1 虛擬內(nèi)存(Virtual Memory) 66
4.6.2 內(nèi)存保護(hù)(Memory Protection) 69
4.6.3 內(nèi)存分配與回收 69
4.6.4 進(jìn)程間通信——mmap 70
4.7 Android中的Low Memory Killer 71
4.8 Android匿名共享內(nèi)存(Anonymous Shared Memory) 74
4.8.1 Ashmem設(shè)備 74
4.8.2 Ashmem應(yīng)用實(shí)例 78
4.9 JNI 83
4.9.1 Java函數(shù)的本地實(shí)現(xiàn) 83
4.9.2 本地代碼訪問(wèn)JVM 86
4.10 學(xué)習(xí)Android系統(tǒng)的兩條線索 88
第5章 Android進(jìn)程/線程管理 89
5.1 Android進(jìn)程和線程 89
5.2 Handler, MessageQueue,Runnable與Looper 95
5.3 UI主線程——ActivityThread 102
5.4 Thread類(lèi) 105
5.4.1 Thread類(lèi)的內(nèi)部原理 105
5.4.2 Thread休眠和喚醒 106
5.4.3 Thread實(shí)例 110
5.5 Android應(yīng)用程序的典型啟動(dòng)流程 112
第6章 進(jìn)程間通信——Binder 114
6.1 智能指針 117
6.1.1 智能指針的設(shè)計(jì)理念 117
6.1.2 強(qiáng)指針sp 120
6.1.3 弱指針wp 121
6.2 進(jìn)程間的數(shù)據(jù)傳遞載體——Parcel 128
6.3 Binder驅(qū)動(dòng)與協(xié)議 135
6.3.1 打開(kāi)Binder驅(qū)動(dòng)——binder_open 136
6.3.2 binder_mmap 137
6.3.3 binder_ioctl 140
6.4 “DNS”服務(wù)器——ServiceManager(Binder Server) 141
6.4.1 ServiceManager的啟動(dòng) 141
6.4.2 ServiceManager的構(gòu)建 142
6.4.3 獲取ServiceManager服務(wù)——設(shè)計(jì)思考 147
6.4.4 ServiceManagerProxy 151
6.4.5 IBinder和BpBinder 153
6.4.6 ProcessState和IPCThreadState 155
6.5 Binder客戶(hù)端——Binder Client 185
6.6 Android接口描述語(yǔ)言——AIDL 190
6.7 匿名Binder Server 202
第7章 Android啟動(dòng)過(guò)程簡(jiǎn)析 205
7.1 第一個(gè)系統(tǒng)進(jìn)程(init) 205
7.1.1 init.rc語(yǔ)法 205
7.1.2 init.rc實(shí)例分析 208
7.2 系統(tǒng)關(guān)鍵服務(wù)的啟動(dòng)簡(jiǎn)析 209
7.2.1 Android的“DNS服務(wù)器”——ServiceManager 209
7.2.2 “孕育”新的線程和進(jìn)程——Zygote 209
7.2.3 Android的“系統(tǒng)服務(wù)”——SystemServer 211
第8章 管理Activity和組件運(yùn)行狀態(tài)的系統(tǒng)進(jìn)程——Activity ManagerService (AMS) 213
8.1 AMS功能概述 213
8.2 管理當(dāng)前系統(tǒng)中Activity狀態(tài)——Activity Stack 215
8.3 startActivity流程 217
8.4 完成同一任務(wù)的“集合”——Activity Task 224
8.4.1 “后進(jìn)先出”——Last In,F(xiàn)irst Out 225
8.4.2 管理Activity Task 226
第9章 GUI系統(tǒng)之SurfaceFlinger 229
9.1 OpenGL ES與EGL 229
9.2 Android的硬件接口——HAL 231
9.3 Android終端顯示設(shè)備的“化身”——Gralloc與Framebuffer 233
9.4 Android中的本地窗口 237
9.4.1 FramebufferNativeWindow 239
9.4.2 應(yīng)用程序端的本地窗口——Surface 245
9.5 BufferQueue詳解 249
9.5.1 BufferQueue的內(nèi)部原理 249
9.5.2 BufferQueue中的緩沖區(qū)分配 252
9.5.3 應(yīng)用程序的典型繪圖流程 258
9.5.4 應(yīng)用程序與BufferQueue的關(guān)系 263
9.6 SurfaceFlinger 267
9.6.1 “黃油計(jì)劃”——Project Butter 267
9.6.2 SurfaceFlinger的啟動(dòng) 271
9.6.3 接口的服務(wù)端——Client 275
9.7 VSync的產(chǎn)生和處理 279
9.7.1 VSync信號(hào)的產(chǎn)生和分發(fā) 279
9.7.2 VSync信號(hào)的處理 285
9.7.3 handleMessageTransaction 287
9.7.4 “界面已經(jīng)過(guò)時(shí)/無(wú)效,需要重新繪制”——handleMessageInvalidate 291
9.7.5 合成前的準(zhǔn)備工作——preComposition 293
9.7.6 可見(jiàn)區(qū)域——rebuildLayerStacks 295
9.7.7 為“Composition”搭建環(huán)境——setUpHWComposer 299
9.7.8 doDebugFlashRegions 301
9.7.9 doComposition 302
第10章 GUI系統(tǒng)之“窗口管理員”——WMS 309
10.1 “窗口管理員”——WMS綜述 310
10.1.1 WMS的啟動(dòng) 312
10.1.2 WMS的基礎(chǔ)功能 312
10.1.3 WMS的工作方式 313
10.1.4 WMS,AMS與Activity間的聯(lián)系 314
10.2 窗口屬性 316
10.2.1 窗口類(lèi)型與層級(jí) 316
10.2.2 窗口策略(Window Policy) 320
10.2.3 窗口屬性(LayoutParams) 322
10.3 窗口的添加過(guò)程 324
10.3.1 系統(tǒng)窗口的添加過(guò)程 324
10.3.2 Activity窗口的添加過(guò)程 333
10.3.3 窗口添加實(shí)例 337
10.4 Surface管理 340
10.4.1 Surface申請(qǐng)流程(relayout) 341
10.4.2 Surface的跨進(jìn)程傳遞 344
10.4.3 Surface的業(yè)務(wù)操作 347
10.5 performLayoutAndPlaceSurfacesLockedInner 347
10.6 窗口大小的計(jì)算過(guò)程 349
10.7 啟動(dòng)窗口的添加與銷(xiāo)毀 358
10.7.1 啟動(dòng)窗口的添加 358
10.7.2 啟動(dòng)窗口的銷(xiāo)毀 362
10.8 窗口動(dòng)畫(huà) 363
10.8.1 窗口動(dòng)畫(huà)類(lèi)型 364
10.8.2 動(dòng)畫(huà)流程跟蹤——WindowStateAnimator 365
10.8.3 AppWindowAnimator 368
10.8.4 動(dòng)畫(huà)的執(zhí)行過(guò)程 370
第11章 讓你的界面炫彩起來(lái)的GUI系統(tǒng)之View體系 377
11.1 應(yīng)用程序中的View框架 377
11.2 Activity中View Tree的創(chuàng)建過(guò)程 380
11.3 在WMS中注冊(cè)窗口 386
11.4 ViewRoot的基本工作方式 388
11.5 View Tree的遍歷時(shí)機(jī) 389
11.6 View Tree的遍歷流程 393
11.7 View和ViewGroup屬性 402
11.7.1 View的基本屬性 402
11.7.2 ViewGroup的屬性 408
11.7.3 View,ViewGroup和ViewParent 408
11.7.4 Callback接口 408
11.8 “作畫(huà)“工具集——Canvas 411
11.8.1 “繪制UI”——Skia 412
11.8.2 數(shù)據(jù)中介——Surface.lockCanvas 413
11.8.3 解鎖并提交結(jié)果——unlockCanvasAndPost 417
11.9 draw和onDraw 417
11.10 View中的消息傳遞 423
11.10.1 View中TouchEvent的投遞流程 423
11.10.2 ViewGoup中TouchEvent的投遞流程 427
11.11 View動(dòng)畫(huà) 430
第12章 “問(wèn)渠哪得清如許,為有源頭活水來(lái)”——InputManagerService與輸入事件 436
12.1 事件的分類(lèi) 436
12.2 事件的投遞流程 439
12.2.1 InputManagerService 440
12.2.2 InputReaderThread 441
12.2.3 InputDispatcherThread 441
12.2.4 ViewRootImpl對(duì)事件的派發(fā) 445
第13章 應(yīng)用不再同質(zhì)化——音頻系統(tǒng) 447
13.1 音頻基礎(chǔ) 448
13.1.1 聲波 448
13.1.2 音頻的錄制、存儲(chǔ)與回放 448
13.1.3 音頻采樣 449
13.1.4 Nyquist–Shannon采樣定律 451
13.1.5 聲道和立體聲 451
13.1.6 聲音定級(jí)——Weber–Fechner law 452
13.1.7 音頻文件格式 453
13.2 音頻框架 454
13.2.1 Linux中的音頻框架 454
13.2.2 TinyAlsa 456
13.2.3 Android系統(tǒng)中的音頻框架 457
13.3 音頻系統(tǒng)的核心——AudioFlinger 459
13.3.1 AudioFlinger服務(wù)的啟動(dòng)和運(yùn)行 460
13.3.2 AudioFlinger對(duì)音頻設(shè)備的管理 461
13.3.3 PlaybackThread的循環(huán)主體 468
13.3.4 AudioMixer 473
13.4 策略的制定者——AudioPolicyService 475
13.4.1 AudioPolicyService概述 475
13.4.2 AudioPolicyService的啟動(dòng)過(guò)程 477
13.4.3 AudioPolicyService與音頻設(shè)備 480
13.5 音頻流的回放——AudioTrack 482
13.5.1 AudioTrack應(yīng)用實(shí)例 482
13.5.2 AudioPolicyService的路由實(shí)現(xiàn) 489
13.6 音頻數(shù)據(jù)流 494
13.6.1 AudioTrack中的音頻流 495
13.6.2 AudioTrack和AudioFlinger間的數(shù)據(jù)交互 498
13.6.3 AudioMixer中的音頻流 504
13.7 音量控制 506
13.8 音頻系統(tǒng)的上層建筑 510
13.8.1 從功能入手 510
13.8.2 MediaPlayer 511
13.8.3 MediaRecorder 514
13.8.4 一個(gè)典型的多媒體錄制程序 517
13.8.5 MediaRecorder源碼解析 518
13.8.6 MediaPlayerService簡(jiǎn)析 520
13.9 Android支持的媒體格式 523
13.9.1 音頻格式 523
13.9.2 視頻格式 523
13.9.3 圖片格式 524
13.9.4 網(wǎng)絡(luò)流媒體 524
13.10 ID3信息簡(jiǎn)述 525
13.11 Android多媒體文件管理 528
13.11.1 MediaStore 529
13.11.2 多媒體文件信息的存儲(chǔ)“倉(cāng)庫(kù)”——MediaProvider 530
13.11.3 多媒體文件管理中的“生產(chǎn)者”——MediaScanner 533
第3篇 應(yīng)用原理篇
第14章 Intent的匹配規(guī)則 538
14.1 Intent屬性 538
14.2 Intent的匹配規(guī)則 540
14.3 Intent匹配源碼簡(jiǎn)析 546
第15章 APK應(yīng)用程序的資源適配 551
15.1 資源類(lèi)型 552
15.1.1 狀態(tài)顏色資源 553
15.1.2 圖形資源 554
15.1.3 布局資源 555
15.1.4 菜單資源 556
15.1.5 字符串資源 556
15.1.6 樣式資源 557
15.1.7 其他資源 558
15.1.8 屬性資源 558
15.2 提供可選資源 561
15.3 最佳資源的匹配流程 565
15.4 屏幕適配 567
15.4.1 屏幕適配的重要參數(shù) 567
15.4.2 如何適配多屏幕 569
第16章 Android字符編碼格式 572
16.1 字符編碼格式背景 572
16.2 ISO/IEC 8859 573
16.3 ISO/IEC 10646 573
16.4 Unicode 574
16.5 String類(lèi)型 577
16.5.1 構(gòu)建String 578
16.5.2 String對(duì)多種編碼的兼容 579
第17章 Android和OpenGL ES 583
17.1 3D圖形學(xué)基礎(chǔ) 584
17.1.1 計(jì)算機(jī)3D圖形 584
17.1.2 圖形管線 585
17.2 Android中的OpenGL ES簡(jiǎn)介 587
17.3 圖形渲染API—EGL 588
17.3.1 EGL與OpenGL ES 588
17.3.2 egl.cfg 588
17.3.3 EGL接口解析 590
17.3.4 EGL實(shí)例 593
17.4 簡(jiǎn)化OpenGL ES開(kāi)發(fā)——GLSurfaceView 593
第18章 “系統(tǒng)的UI”——SystemUI 601
18.1 SystemUI的組成元素 601
18.2 SystemUI的實(shí)現(xiàn) 603
18.3 Android壁紙資源——WallpaperService 610
18.3.1 WallPaperManagerService 611
18.3.2 ImageWallpaper 613
第19章 Android常用的工具“小插件”——Widget機(jī)制 616
19.1 “功能的提供者”——AppWidgetProvider 616
19.2 AppWidgetHost 618
第20章 Android應(yīng)用程序的編譯和打包 624
20.1 “另辟蹊徑”采用第三方工具——Ant 624
20.2 通過(guò)命令行編譯和打包APK 625
20.3 APK編譯過(guò)程詳解 626
20.4 信息安全基礎(chǔ)概述 628
20.5 應(yīng)用程序簽名 633
20.6 應(yīng)用程序簽名源碼簡(jiǎn)析 636
第4篇 Android系統(tǒng)工具
第21章 軟件版本管理 642
21.1 版本管理簡(jiǎn)述 642
21.2 Git的安裝 643
21.2.1 Linux環(huán)境下安裝Git 643
21.2.2 Windows環(huán)境下安裝Git 644
21.3 Git的使用 644
21.3.1 基礎(chǔ)配置 644
21.3.2 新建倉(cāng)庫(kù) 646
21.3.3 文件狀態(tài) 647
21.3.4 忽略某些文件 649
21.3.5 提交更新 649
21.3.6 其他命令 650
21.4 Git原理簡(jiǎn)析 650
21.4.1 分布式版本系統(tǒng)的特點(diǎn) 651
21.4.2 安全散列算法——SHA-1 652
21.4.3 四個(gè)重要對(duì)象 653
21.4.4 三個(gè)區(qū)域 657
21.4.5 分支的概念與實(shí)例 658
第22章 系統(tǒng)調(diào)試輔助工具 662
22.1 萬(wàn)能模擬器——Emulator 662
22.1.1 QEMU 662
22.1.2 Android工程中的QEMU 667
22.1.3 模擬器控制臺(tái)(Emulator Console) 670
22.1.4 實(shí)例:為Android模擬器添加串口功能 672
22.2 此Android非彼Android 674
22.3 快速建立與模擬器或真機(jī)的通信渠道——ADB 676
22.3.1 ADB的使用方法 676
22.3.2 ADB的組成元素 678
22.3.3 ADB源代碼解析 679
22.3.4 ADB Protocol 684

本目錄推薦

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