您现在的位置:首页 > 知识库 > 计算机与软件 >深入理解Android 内核设计思想 第2版 上册
深入理解Android 内核设计思想 第2版 上册

深入理解Android 内核设计思想 第2版 上册

资料大小: 124.48 MB
文档格式: PDF文档
资料语言: 简体中文
资料类别: 计算机与软件
更新日期: 2020-04-02
下载说明:
推荐信息: 内核   林学   设计   深入   理解

本地下载(30点)  备用下载(30点)

内容简介
深入理解Android 内核设计思想 第2版 上册
出版时间:2017年版
内容简介
  全书从操作系统的基础知识入手,全面剖析进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统、虚拟机等核心技术在Android中的实现原理。书中讲述的知识点大部分来源于工程项目研发,因而具有较强的实用性,希望可以让读者“知其然,更知其所以然”。本书分为编译篇、系统原理篇、应用原理篇、系统工具篇,共4篇25章,基本涵盖了参与Android开发所需具备的知识,并通过大量图片与实例来引导读者学习,以求尽量在源码分析外为读者提供更易于理解的思维方式。本书既适合Android系统工程师,也适合于应用开发工程师来阅读,从而提升Android开发能力。读者可以在本书潜移默化的学习过程中更深刻地理解Android系统,并将所学知识自然地应用到实际开发难题的解决中。
目录
第1篇Android编译篇
第1章Android系统简介2
1.1Android系统发展历程2
1.2Android系统特点4
1.3Android系统框架8
第2章Android源码下载及编译11
2.1Android源码下载指南11
2.1.1基于Repo和Git的版本管理11
2.1.2Android源码下载流程12
2.2原生Android系统编译指南16
2.2.1建立编译环境16
2.2.2编译流程19
2.3定制产品的编译与烧录22
2.3.1定制新产品22
2.3.2Linux内核编译26
2.3.3烧录/升级系统27
2.4AndroidMultilibBuild28
2.5Android系统映像文件31
2.5.1boot.img32
2.5.2ramdisk.img34
2.5.3system.img35
2.5.4VerifiedBoot35
2.6ODEX流程37
2.7OTA系统升级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编译系统50
3.1Makefile入门50
3.2Android编译系统52
3.2.1Makefile依赖树的概念53
3.2.2Android编译系统抽象模型53
3.2.3树根节点droid54
3.2.4main.mk解析55
3.2.5droidcore节点59
3.2.6dist_files61
3.2.7Android.mk的编写规则61
3.3JackToolchain64
3.4SDK的编译过程68
3.4.1envsetup.sh68
3.4.2lunchsdk-eng70
3.4.3makesdk75
3.5Android系统GDB调试85
第2篇Android原理篇
第4章操作系统基础90
4.1计算机体系结构(ComputerArchitecture)90
4.1.1冯?诺依曼结构90
4.1.2哈佛结构90
4.2什么是操作系统91
4.3进程间通信的经典实现93
4.3.1共享内存(SharedMemory)94
4.3.2管道(Pipe)95
4.3.3UNIXDomainSocket97
4.3.4RPC(RemoteProcedureCalls)99
4.4同步机制的经典实现100
4.4.1信号量(Semaphore)100
4.4.2Mutex101
4.4.3管程(Monitor)101
4.4.4LinuxFutex102
4.4.5同步范例103
4.5Android中的同步机制104
4.5.1进程间同步——Mutex104
4.5.2条件判断——Condition105
4.5.3“栅栏、障碍”——Barrier107
4.5.4加解锁的自动化操作——Autolock108
4.5.5读写锁——ReaderWriterMutex109
4.6操作系统内存管理基础110
4.6.1虚拟内存(VirtualMemory)110
4.6.2内存保护(MemoryProtection)113
4.6.3内存分配与回收113
4.6.4进程间通信——mmap114
4.6.5写时拷贝技术(CopyonWrite)115
4.7Android中的LowMemoryKiller115
4.8Android匿名共享内存(AnonymousSharedMemory)118
4.8.1Ashmem设备118
4.8.2Ashmem应用实例122
4.9JNI127
4.9.1Java函数的本地实现127
4.9.2本地代码访问JVM130
4.10Java中的反射机制132
4.11学习Android系统的两条线索133
第5章Android进程/线程和程序内存优化134
5.1Android进程和线程134
5.2Handler,MessageQueue,Runnable与Looper140
5.3UI主线程——ActivityThread147
5.4Thread类150
5.4.1Thread类的内部原理150
5.4.2Thread休眠和唤醒151
5.4.3Thread实例155
5.5Android应用程序如何利用CPU的多核处理能力157
5.6Android应用程序的典型启动流程157
5.7Android程序的内存管理与优化159
5.7.1Android系统对内存使用的限制159
5.7.2Android中的内存泄露与内存监测160
第6章进程间通信—Binder166
6.1智能指针169
6.1.1智能指针的设计理念169
6.1.2强指针sp172
6.1.3弱指针wp173
6.2进程间的数据传递载体——Parcel179
6.3Binder驱动与协议187
6.3.1打开Binder驱动——binder_open188
6.3.2binder_mmap189
6.3.3binder_ioctl192
6.4“DNS”服务器——ServiceManager(BinderServer)193
6.4.1ServiceManager的启动193
6.4.2ServiceManager的构建194
6.4.3获取ServiceManager服务—设计思考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第一个系统进程(init)257
7.1.1init.rc语法257
7.1.2init.rc实例分析260
7.2系统关键服务的启动简析261
7.2.1Android的“DNS服务器”——ServiceManager261
7.2.2“孕育”新的线程和进程——Zygote261
7.2.3Android的“系统服务”——SystemServer274
7.2.4Vold和ExternalStorage存储设备276
7.3多用户管理282
第8章管理Activity和组件运行状态的系统进程——ActivityManagerService(AMS)284
8.1AMS功能概述284
8.2管理当前系统中Activity状态——ActivityStack286
8.3startActivity流程288
8.4完成同一任务的“集合”——ActivityTask296
8.4.1“后进先出”——LastIn,FirstOut297
8.4.2管理ActivityTask298
8.5Instrumentation机制300
第9章GUI系统—SurfaceFlinger305
9.1OpenGLES与EGL305
9.2Android的硬件接口——HAL307
9.3Android终端显示设备的“化身”——Gralloc与Framebuffer309
9.4Android中的本地窗口313
9.4.1FramebufferNativeWindow315
9.4.2应用程序端的本地窗口——Surface321
9.5BufferQueue详解325
9.5.1BufferQueue的内部原理325
9.5.2BufferQueue中的缓冲区分配328
9.5.3应用程序的典型绘图流程333
9.5.4应用程序与BufferQueue的关系339
9.6SurfaceFlinger343
9.6.1“黄油计划”——ProjectButter343
9.6.2SurfaceFlinger的启动347
9.6.3接口的服务端——Client351
9.7VSync的产生和处理355
9.7.1VSync信号的产生和分发355
9.7.2VSync信号的处理361
9.7.3handleMessageTransaction363
9.7.4“界面已经过时/无效,需要重新绘制”——handleMessageInvalidate367
9.7.5合成前的准备工作——preComposition369
9.7.6可见区域——rebuildLayerStacks371
9.7.7为“Composition”搭建环境——setUpHWComposer375
9.7.8doDebugFlashRegions377
9.7.9doComposition377
第10章GUI系统之“窗口管理员”—WMS385
10.1“窗口管理员”——WMS综述386
10.1.1WMS的启动388
10.1.2WMS的基础功能388
10.1.3WMS的工作方式389
10.1.4WMS,AMS与Activity间的联系390
10.2窗口属性392
10.2.1窗口类型与层级392
10.2.2窗口策略(WindowPolicy)396
10.2.3窗口属性(LayoutParams)398
10.3窗口的添加过程400
10.3.1系统窗口的添加过程400
10.3.2Activity窗口的添加过程409
10.3.3窗口添加实例412
10.4Surface管理416
10.4.1Surface申请流程(relayout)416
10.4.2Surface的跨进程传递420
10.4.3Surface的业务操作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动画的执行过程446
第11章让你的界面炫彩起来的GUI系统—View体系452
第12章“问渠哪得清如许,为有源头活水来”—InputManagerService与输入事件514
12.1事件的分类514
12.2事件的投递流程517
12.2.1InputManagerService518
12.2.2InputReaderThread519
12.2.3InputDispatcherThread519
12.2.4ViewRootImpl对事件的派发523
12.3事件注入524
第13章应用不再同质化—音频系统526
13.1音频基础527
13.2音频框架532
13.3音频系统的核心——Audio-Flinger538
13.4策略的制定者——Audio-PolicyService553
13.5音频流的回放——AudioTrack560
13.6音频数据流572
13.7音量控制584
13.8音频系统的上层建筑588
13.9Android支持的媒体格式600
13.10ID3信息简述602
13.11Android多媒体文件管理606