注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)計(jì)算機(jī)組織與體系結(jié)構(gòu)深入理解Android內(nèi)核設(shè)計(jì)思想(第2版 套裝上下冊(cè))

深入理解Android內(nèi)核設(shè)計(jì)思想(第2版 套裝上下冊(cè))

深入理解Android內(nèi)核設(shè)計(jì)思想(第2版 套裝上下冊(cè))

定 價(jià):¥158.00

作 者: 林學(xué)森 著
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787115452634 出版時(shí)間: 2017-07-01 包裝: 平裝
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

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

作者簡介

  林學(xué)森,曾于多家跨國企業(yè)擔(dān)任研發(fā)和管理工作,并已在國內(nèi)外會(huì)議、雜志上發(fā)表多篇文章,獲得多個(gè)發(fā)明專利。現(xiàn)為某世界500強(qiáng)科技公司高級(jí)專家、資深架構(gòu)師。

圖書目錄

第1篇Android編譯篇
第1章Android系統(tǒng)簡介2
1.1Android系統(tǒng)發(fā)展歷程2
1.2Android系統(tǒng)特點(diǎn)4
1.3Android系統(tǒng)框架8
第2章Android源碼下載及編譯11
2.1Android源碼下載指南11
2.1.1基于Repo和Git的版本管理11
2.1.2Android源碼下載流程12
2.2原生Android系統(tǒng)編譯指南16
2.2.1建立編譯環(huán)境16
2.2.2編譯流程19
2.3定制產(chǎn)品的編譯與燒錄22
2.3.1定制新產(chǎn)品22
2.3.2Linux內(nèi)核編譯26
2.3.3燒錄/升級(jí)系統(tǒng)27
2.4AndroidMultilibBuild28
2.5Android系統(tǒng)映像文件31
2.5.1boot.img32
2.5.2ramdisk.img34
2.5.3system.img35
2.5.4VerifiedBoot35
2.6ODEX流程37
2.7OTA系統(tǒng)升級(jí)39
2.7.1生成升級(jí)包39
2.7.2獲取升級(jí)包40
2.7.3OTA升級(jí)—Recovery模式41
2.8Android反編譯44
2.9NDKBuild46
2.10第三方ROM的移植48
第3章Android編譯系統(tǒng)50
3.1Makefile入門50
3.2Android編譯系統(tǒng)52
3.2.1Makefile依賴樹的概念53
3.2.2Android編譯系統(tǒng)抽象模型53
3.2.3樹根節(jié)點(diǎn)droid54
3.2.4main.mk解析55
3.2.5droidcore節(jié)點(diǎn)59
3.2.6dist_files61
3.2.7Android.mk的編寫規(guī)則61
3.3JackToolchain64
3.4SDK的編譯過程68
3.4.1envsetup.sh68
3.4.2lunchsdk-eng70
3.4.3makesdk75
3.5Android系統(tǒng)GDB調(diào)試85
第2篇Android原理篇
第4章操作系統(tǒng)基礎(chǔ)90
4.1計(jì)算機(jī)體系結(jié)構(gòu)(ComputerArchitecture)90
4.1.1馮?諾依曼結(jié)構(gòu)90
4.1.2哈佛結(jié)構(gòu)90
4.2什么是操作系統(tǒng)91
4.3進(jìn)程間通信的經(jīng)典實(shí)現(xiàn)93
4.3.1共享內(nèi)存(SharedMemory)94
4.3.2管道(Pipe)95
4.3.3UNIXDomainSocket97
4.3.4RPC(RemoteProcedureCalls)99
4.4同步機(jī)制的經(jīng)典實(shí)現(xiàn)100
4.4.1信號(hào)量(Semaphore)100
4.4.2Mutex101
4.4.3管程(Monitor)101
4.4.4LinuxFutex102
4.4.5同步范例103
4.5Android中的同步機(jī)制104
4.5.1進(jìn)程間同步——Mutex104
4.5.2條件判斷——Condition105
4.5.3“柵欄、障礙”——Barrier107
4.5.4加解鎖的自動(dòng)化操作——Autolock108
4.5.5讀寫鎖——ReaderWriterMutex109
4.6操作系統(tǒng)內(nèi)存管理基礎(chǔ)110
4.6.1虛擬內(nèi)存(VirtualMemory)110
4.6.2內(nèi)存保護(hù)(MemoryProtection)113
4.6.3內(nèi)存分配與回收113
4.6.4進(jìn)程間通信——mmap114
4.6.5寫時(shí)拷貝技術(shù)(CopyonWrite)115
4.7Android中的LowMemoryKiller115
4.8Android匿名共享內(nèi)存(AnonymousSharedMemory)118
4.8.1Ashmem設(shè)備118
4.8.2Ashmem應(yīng)用實(shí)例122
4.9JNI127
4.9.1Java函數(shù)的本地實(shí)現(xiàn)127
4.9.2本地代碼訪問JVM130
4.10Java中的反射機(jī)制132
4.11學(xué)習(xí)Android系統(tǒng)的兩條線索133
第5章Android進(jìn)程/線程和程序內(nèi)存優(yōu)化134
5.1Android進(jìn)程和線程134
5.2Handler,MessageQueue,Runnable與Looper140
5.3UI主線程——ActivityThread147
5.4Thread類150
5.4.1Thread類的內(nèi)部原理150
5.4.2Thread休眠和喚醒151
5.4.3Thread實(shí)例155
5.5Android應(yīng)用程序如何利用CPU的多核處理能力157
5.6Android應(yīng)用程序的典型啟動(dòng)流程157
5.7Android程序的內(nèi)存管理與優(yōu)化159
5.7.1Android系統(tǒng)對(duì)內(nèi)存使用的限制159
5.7.2Android中的內(nèi)存泄露與內(nèi)存監(jiān)測(cè)160
第6章進(jìn)程間通信—Binder166
6.1智能指針169
6.1.1智能指針的設(shè)計(jì)理念169
6.1.2強(qiáng)指針sp172
6.1.3弱指針wp173
6.2進(jìn)程間的數(shù)據(jù)傳遞載體——Parcel179
6.3Binder驅(qū)動(dòng)與協(xié)議187
6.3.1打開Binder驅(qū)動(dòng)——binder_open188
6.3.2binder_mmap189
6.3.3binder_ioctl192
6.4“DNS”服務(wù)器——ServiceManager(BinderServer)193
6.4.1ServiceManager的啟動(dòng)193
6.4.2ServiceManager的構(gòu)建194
6.4.3獲取ServiceManager服務(wù)—設(shè)計(jì)思考199
6.4.4ServiceManagerProxy203
6.4.5IBinder和BpBinder205
6.4.6ProcessState和IPCThreadState207
6.5Binder客戶端——BinderClient237
6.6Android接口描述語言——AIDL242
6.7匿名BinderServer254
第7章Android啟動(dòng)過程257
7.1第一個(gè)系統(tǒng)進(jìn)程(init)257
7.1.1init.rc語法257
7.1.2init.rc實(shí)例分析260
7.2系統(tǒng)關(guān)鍵服務(wù)的啟動(dòng)簡析261
7.2.1Android的“DNS服務(wù)器”——ServiceManager261
7.2.2“孕育”新的線程和進(jìn)程——Zygote261
7.2.3Android的“系統(tǒng)服務(wù)”——SystemServer274
7.2.4Vold和ExternalStorage存儲(chǔ)設(shè)備276
7.3多用戶管理282
第8章管理Activity和組件運(yùn)行狀態(tài)的系統(tǒng)進(jìn)程——ActivityManagerService(AMS)284
8.1AMS功能概述284
8.2管理當(dāng)前系統(tǒng)中Activity狀態(tài)——ActivityStack286
8.3startActivity流程288
8.4完成同一任務(wù)的“集合”——ActivityTask296
8.4.1“后進(jìn)先出”——LastIn,F(xiàn)irstOut297
8.4.2管理ActivityTask298
8.5Instrumentation機(jī)制300
第9章GUI系統(tǒng)—SurfaceFlinger305
9.1OpenGLES與EGL305
9.2Android的硬件接口——HAL307
9.3Android終端顯示設(shè)備的“化身”——Gralloc與Framebuffer309
9.4Android中的本地窗口313
9.4.1FramebufferNativeWindow315
9.4.2應(yīng)用程序端的本地窗口——Surface321
9.5BufferQueue詳解325
9.5.1BufferQueue的內(nèi)部原理325
9.5.2BufferQueue中的緩沖區(qū)分配328
9.5.3應(yīng)用程序的典型繪圖流程333
9.5.4應(yīng)用程序與BufferQueue的關(guān)系339
9.6SurfaceFlinger343
9.6.1“黃油計(jì)劃”——ProjectButter343
9.6.2SurfaceFlinger的啟動(dòng)347
9.6.3接口的服務(wù)端——Client351
9.7VSync的產(chǎn)生和處理355
9.7.1VSync信號(hào)的產(chǎn)生和分發(fā)355
9.7.2VSync信號(hào)的處理361
9.7.3handleMessageTransaction363
9.7.4“界面已經(jīng)過時(shí)/無效,需要重新繪制”——handleMessageInvalidate367
9.7.5合成前的準(zhǔn)備工作——preComposition369
9.7.6可見區(qū)域——rebuildLayerStacks371
9.7.7為“Composition”搭建環(huán)境——setUpHWComposer375
9.7.8doDebugFlashRegions377
9.7.9doComposition377
第10章GUI系統(tǒng)之“窗口管理員”—WMS385
10.1“窗口管理員”——WMS綜述386
10.1.1WMS的啟動(dòng)388
10.1.2WMS的基礎(chǔ)功能388
10.1.3WMS的工作方式389
10.1.4WMS,AMS與Activity間的聯(lián)系390
10.2窗口屬性392
10.2.1窗口類型與層級(jí)392
10.2.2窗口策略(WindowPolicy)396
10.2.3窗口屬性(LayoutParams)398
10.3窗口的添加過程400
10.3.1系統(tǒng)窗口的添加過程400
10.3.2Activity窗口的添加過程409
10.3.3窗口添加實(shí)例412
10.4Surface管理416
10.4.1Surface申請(qǐng)流程(relayout)416
10.4.2Surface的跨進(jìn)程傳遞420
10.4.3Surface的業(yè)務(wù)操作422
10.5performLayoutAndPlaceSurfacesLockedInner423
10.6窗口大小的計(jì)算過程424
10.7啟動(dòng)窗口的添加與銷毀433
10.7.1啟動(dòng)窗口的添加433
10.7.2啟動(dòng)窗口的銷毀437
10.8窗口動(dòng)畫438
10.8.1窗口動(dòng)畫類型439
10.8.2動(dòng)畫流程跟蹤——WindowStateAnimator440
10.8.3AppWindowAnimator444
10.8.4動(dòng)畫的執(zhí)行過程446
第11章讓你的界面炫彩起來的GUI系統(tǒng)—View體系452
第12章“問渠哪得清如許,為有源頭活水來”—InputManagerService與輸入事件514
12.1事件的分類514
12.2事件的投遞流程517
12.2.1InputManagerService518
12.2.2InputReaderThread519
12.2.3InputDispatcherThread519
12.2.4ViewRootImpl對(duì)事件的派發(fā)523
12.3事件注入524
第13章應(yīng)用不再同質(zhì)化—音頻系統(tǒng)526
13.1音頻基礎(chǔ)527
13.2音頻框架532
13.3音頻系統(tǒng)的核心——Audio-Flinger538
13.4策略的制定者——Audio-PolicyService553
13.5音頻流的回放——AudioTrack560
13.6音頻數(shù)據(jù)流572
13.7音量控制584
13.8音頻系統(tǒng)的上層建筑588
13.9Android支持的媒體格式600
13.10ID3信息簡述602
13.11Android多媒體文件管理606
第3篇應(yīng)用原理篇
第14章Intent的匹配規(guī)則616
第15章APK應(yīng)用程序的資源適配628
第16章Android字符編碼格式650
第17章Android和OpenGLES660
第18章“系統(tǒng)的UI”——SystemUI685
第19章Android常用的工具
第20章Android應(yīng)用程序的編譯和打包707
第21章Android虛擬機(jī)725
21.1Android虛擬機(jī)基礎(chǔ)知識(shí)725
21.1.1Java虛擬機(jī)核心概念725
21.1.2LLVM編譯器框架734
21.1.3Android中的經(jīng)典垃圾回收算法736
21.1.4Art和Dalvik之爭738
21.1.5Art虛擬機(jī)整體框架741
21.1.6Android應(yīng)用程序與虛擬機(jī)742
21.1.7ProcedureCallStandardforArmArchitecture(過程調(diào)用標(biāo)準(zhǔn))744
21.1.8C++11標(biāo)準(zhǔn)中的新特性746
21.2Android虛擬機(jī)核心文件格式—Dex字節(jié)碼749
21.3Android虛擬機(jī)核心文件格式—可執(zhí)行文件的基石ELF756
21.3.1ELF文件格式756
21.3.2Linux平臺(tái)下ELF文件的加載和動(dòng)態(tài)鏈接過程764
21.3.3AndroidLinker和動(dòng)態(tài)鏈接庫771
21.3.4SignalHandler和FaultManager782
21.4Android虛擬機(jī)核心文件格式——“主宰者”O(jiān)AT786
21.4.1OAT文件格式解析786
21.4.2OAT的兩個(gè)編譯時(shí)機(jī)793
21.5Android虛擬機(jī)的典型啟動(dòng)流程806
21.6堆管理器和堆空間釋義815
21.7Android虛擬機(jī)中的線程管理823
21.7.1Java線程的創(chuàng)建過程823
21.7.2線程的掛起過程827
21.8Art虛擬機(jī)中的代碼執(zhí)行方式綜述829
21.9Art虛擬機(jī)的“中樞系統(tǒng)”——執(zhí)行引擎之Interpreter836
21.10Art虛擬機(jī)的“中樞系統(tǒng)”——執(zhí)行引擎之JIT839
21.10.1JIT重出江湖的契機(jī)839
21.10.2AndroidN版本中JIT的設(shè)計(jì)目標(biāo)及策略840
21.10.3ProfileGuidedCompilation(追蹤技術(shù))842
21.10.4AOTCompilationDaemon843
21.11Art虛擬機(jī)的“中樞系統(tǒng)”——執(zhí)行引擎之本地代碼844
21.12Androidx86版本兼容ARM二進(jìn)制代碼——NativeBridge864
21.13Android應(yīng)用程序調(diào)試原理解析871
21.13.1Java代碼調(diào)試與JDWP協(xié)議872
21.13.2Native代碼調(diào)試879
21.13.3利用GDB調(diào)試AndroidArt虛擬機(jī)885
第22章Android安全機(jī)制透析887
22.1AndroidSecurity綜述887
22.2SELinux889
22.2.1DAC889
22.2.2MAC890
22.2.3基于MAC的SELinux890
22.3Android系統(tǒng)安全保護(hù)的三重利劍892
22.3.1第一劍:Permission機(jī)制893
22.3.2加強(qiáng)劍:DAC(UGO)保護(hù)896
22.3.3終極劍:SEAndroid898
22.4SEAndroid剖析899
22.4.1SEAndroid的頂層模型899
22.4.2SEAndroid相關(guān)的核心源碼900
22.4.3SEAndroid標(biāo)簽和規(guī)則901
22.4.4如何在Android系統(tǒng)中自定義SEAndroid903
22.4.5TE文件的語法規(guī)則905
22.4.6SEAndroid中的核心主體—init進(jìn)程907
22.4.7SEAndroid中的客體912
22.5Android設(shè)備Root簡析913
22.6APK的加固保護(hù)分析916
第4篇Android系統(tǒng)工具
第23章IDE和Gradle922
23.1Gradle的核心要點(diǎn)922
23.1.1Groovy與Gradle923
23.1.2Gradle的生命周期926
23.2Gradle的Console語法927
23.3GradleWrapper和Cache929
23.4AndroidStudio和Gradle931
23.4.1Gradle插件基礎(chǔ)知識(shí)931
23.4.2AndroidStudio中的Gradle編譯腳本932
第24章軟件版本管理937
24.1版本管理簡述937
24.2Git的安裝937
24.2.1Linux環(huán)境下安裝Git938
24.2.2Windows環(huán)境下安裝Git939
24.3Git的使用939
24.3.1基礎(chǔ)配置939
24.3.2新建倉庫940
24.3.3文件狀態(tài)942
24.3.4忽略某些文件943
24.3.5提交更新944
24.3.6其他命令944
24.4Git原理簡析945
24.4.1分布式版本系統(tǒng)的特點(diǎn)946
24.4.2安全散列算法—SHA-1947
24.4.34個(gè)重要對(duì)象948
24.4.4三個(gè)區(qū)域953
24.4.5分支的概念與實(shí)例954
第25章系統(tǒng)調(diào)試輔助工具958
25.1萬能模擬器——Emulator958
25.1.1QEMU958
25.1.2Android工程中的QEMU963
25.1.3模擬器控制臺(tái)(EmulatorConsole)966
25.1.4實(shí)例:為Android模擬器添加串口功能969
25.2此Android非彼Android970
25.3快速建立與模擬器或真機(jī)的通信渠道——ADB972
25.3.1ADB的使用方法972
25.3.2ADB的組成元素975
25.3.3ADB源代碼解析976
25.3.4ADBProtocol981
25.4SDKLayoutlib984
25.5TraceView和Dmtracedump985
25.6Systrace987
25.7代碼覆蓋率統(tǒng)計(jì)992
25.8模擬GPS位置995

本目錄推薦

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