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

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

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

定 價:¥158.00

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

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

內(nèi)容簡介

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

作者簡介

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

圖書目錄

第1篇Android編譯篇
第1章Android系統(tǒng)簡介2
1.1Android系統(tǒng)發(fā)展歷程2
1.2Android系統(tǒng)特點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燒錄/升級系統(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)升級39
2.7.1生成升級包39
2.7.2獲取升級包40
2.7.3OTA升級—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é)點droid54
3.2.4main.mk解析55
3.2.5droidcore節(jié)點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ī)體系結(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)典實現(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)典實現(xiàn)100
4.4.1信號量(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加解鎖的自動化操作——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ù)(CopyonWrite)115
4.7Android中的LowMemoryKiller115
4.8Android匿名共享內(nèi)存(AnonymousSharedMemory)118
4.8.1Ashmem設(shè)備118
4.8.2Ashmem應(yīng)用實例122
4.9JNI127
4.9.1Java函數(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實例155
5.5Android應(yīng)用程序如何利用CPU的多核處理能力157
5.6Android應(yīng)用程序的典型啟動流程157
5.7Android程序的內(nèi)存管理與優(yōu)化159
5.7.1Android系統(tǒng)對內(nèi)存使用的限制159
5.7.2Android中的內(nèi)存泄露與內(nèi)存監(jiān)測160
第6章進(jìn)程間通信—Binder166
6.1智能指針169
6.1.1智能指針的設(shè)計理念169
6.1.2強(qiáng)指針sp172
6.1.3弱指針wp173
6.2進(jìn)程間的數(shù)據(jù)傳遞載體——Parcel179
6.3Binder驅(qū)動與協(xié)議187
6.3.1打開Binder驅(qū)動——binder_open188
6.3.2binder_mmap189
6.3.3binder_ioctl192
6.4“DNS”服務(wù)器——ServiceManager(BinderServer)193
6.4.1ServiceManager的啟動193
6.4.2ServiceManager的構(gòu)建194
6.4.3獲取ServiceManager服務(wù)—設(shè)計思考199
6.4.4ServiceManagerProxy203
6.4.5IBinder和BpBinder205
6.4.6ProcessState和IPCThreadState207
6.5Binder客戶端——BinderClient237
6.6Android接口描述語言——AIDL242
6.7匿名BinderServer254
第7章Android啟動過程257
7.1第一個系統(tǒng)進(jìn)程(init)257
7.1.1init.rc語法257
7.1.2init.rc實例分析260
7.2系統(tǒng)關(guān)鍵服務(wù)的啟動簡析261
7.2.1Android的“DNS服務(wù)器”——ServiceManager261
7.2.2“孕育”新的線程和進(jìn)程——Zygote261
7.2.3Android的“系統(tǒng)服務(wù)”——SystemServer274
7.2.4Vold和ExternalStorage存儲設(shè)備276
7.3多用戶管理282
第8章管理Activity和組件運行狀態(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“黃油計劃”——ProjectButter343
9.6.2SurfaceFlinger的啟動347
9.6.3接口的服務(wù)端——Client351
9.7VSync的產(chǎn)生和處理355
9.7.1VSync信號的產(chǎn)生和分發(fā)355
9.7.2VSync信號的處理361
9.7.3handleMessageTransaction363
9.7.4“界面已經(jīng)過時/無效,需要重新繪制”——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的啟動388
10.1.2WMS的基礎(chǔ)功能388
10.1.3WMS的工作方式389
10.1.4WMS,AMS與Activity間的聯(lián)系390
10.2窗口屬性392
10.2.1窗口類型與層級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窗口添加實例412
10.4Surface管理416
10.4.1Surface申請流程(relayout)416
10.4.2Surface的跨進(jìn)程傳遞420
10.4.3Surface的業(yè)務(wù)操作422
10.5performLayoutAndPlaceSurfacesLockedInner423
10.6窗口大小的計算過程424
10.7啟動窗口的添加與銷毀433
10.7.1啟動窗口的添加433
10.7.2啟動窗口的銷毀437
10.8窗口動畫438
10.8.1窗口動畫類型439
10.8.2動畫流程跟蹤——WindowStateAnimator440
10.8.3AppWindowAnimator444
10.8.4動畫的執(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對事件的派發(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ǔ)知識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平臺下ELF文件的加載和動態(tài)鏈接過程764
21.3.3AndroidLinker和動態(tài)鏈接庫771
21.3.4SignalHandler和FaultManager782
21.4Android虛擬機(jī)核心文件格式——“主宰者”O(jiān)AT786
21.4.1OAT文件格式解析786
21.4.2OAT的兩個編譯時機(jī)793
21.5Android虛擬機(jī)的典型啟動流程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è)計目標(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的核心要點922
23.1.1Groovy與Gradle923
23.1.2Gradle的生命周期926
23.2Gradle的Console語法927
23.3GradleWrapper和Cache929
23.4AndroidStudio和Gradle931
23.4.1Gradle插件基礎(chǔ)知識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)的特點946
24.4.2安全散列算法—SHA-1947
24.4.34個重要對象948
24.4.4三個區(qū)域953
24.4.5分支的概念與實例954
第25章系統(tǒng)調(diào)試輔助工具958
25.1萬能模擬器——Emulator958
25.1.1QEMU958
25.1.2Android工程中的QEMU963
25.1.3模擬器控制臺(EmulatorConsole)966
25.1.4實例:為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)計992
25.8模擬GPS位置995

本目錄推薦

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